Java文件操作实现doc格式转pdf

使用场景

在进行生成文档或者报告的时候,生成的word想要转换为pdf格式,这样才能保证报告的不可修改性,但是aspose-words的工具的License令人头疼,这篇文章就是解决这个doc转pdf的License的问题。话不多说,直接上实操。

所需资源

首先,需要一个本地的jar包,放在resources下的lib文件夹中,没有的话自己新建一个

这个jar包没有的小伙伴,可以在这边获取下载:aspose-words-21.11-jdk17.jar

代码实现

把本地的jar包导入到项目pom中

XML 复制代码
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>21.11</version>
    <scope>system</scope>
    <systemPath>${pom.basedir}/src/main/resources/lib/aspose-words-21.11-jdk17.jar</systemPath>
</dependency>

代码实现doc转pdf,新建一个工具类PDFHelper.java

java 复制代码
import com.aspose.words.License;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;

import java.io.ByteArrayInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;

@Slf4j
public class PDFHelper {

    @SneakyThrows
    public static void doc2pdfV2(String sourceFile, String targetFile) {
        InputStream is = null;
        String licenseStr =
                "<License>\n" +
                        "    <Data>\n" +
                        "        <Products>\n" +
                        "            <Product>Aspose.Total for Java</Product>\n" +
                        "            <Product>Aspose.Words for Java</Product>\n" +
                        "        </Products>\n" +
                        "        <EditionType>Enterprise</EditionType>\n" +
                        "        <SubscriptionExpiry>20991231</SubscriptionExpiry>\n" +
                        "        <LicenseExpiry>20991231</LicenseExpiry>\n" +
                        "        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>\n" +
                        "    </Data>\n" +
                        "    <Signature>\n" +
                        "        sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=\n" +
                        "    </Signature>\n" +
                        "</License>";
        //            is = new FileInputStream("C:\\Users\\Administrator\\Desktop\\tool\\license.xml");
        is = new ByteArrayInputStream(licenseStr.getBytes(StandardCharsets.UTF_8));
        License license = new License();
        try {
            license.setLicense(is);
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            long old = System.currentTimeMillis();
            FileOutputStream os = new FileOutputStream(targetFile);
            com.aspose.words.Document doc = new com.aspose.words.Document(sourceFile);
            doc.save(os, com.aspose.words.SaveFormat.PDF);
            os.close();
            long now = System.currentTimeMillis();
            System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒");  //转化用时
        } catch (Exception e) {
            e.printStackTrace();
            log.error("word转pdf 报告生成异常");
            throw new Exception("报告生成pdf失败!");
        }
    }
}

其中辅助使用到了lombok模块,如果项目本身没有的,可以自行修改或者导入

导入pom代码如下:

XML 复制代码
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
</dependency>
相关推荐
深蓝冰河12 小时前
全脑记忆法创始人的2套快速记忆法pdf 书下载地址
pdf
老王的笔记v20 小时前
69期 Filee文件格式转换工具 转盘拖拽 图片转PDF和音频转换
pdf·开源软件
指针向南1 天前
怎么把PDF里的图片提取出来?5种方法和在线工具的坑
图像处理·人工智能·计算机视觉·pdf
橙光成长1 天前
PDF离线工具箱深度解析:4MB纯前端单文件,40+功能全本地运行,文件绝不上传
前端·pdf·1024程序员节
易点云徐源2 天前
PDF 默认打开方式刚修好,过一分钟又变成“未知应用”?使用 ProcMon 成功抓出后台程序
windows·pdf
优化控制仿真模型2 天前
【2026.12月英语六级】英语六级历年真题PDF电子版+高频核心词汇1500个
经验分享·pdf
开开心心就好3 天前
发票信息录入太麻烦?离线工具一键转表格
运维·服务器·前端·pdf·ocr·maven·intellij-idea
聚美智数3 天前
文档转换 API‑文档转 PDF‑PDF 转文档‑异步文档处理‑文件格式迁移‑转换结果回调推送 API 接口介绍
android·java·pdf
麦序子3 天前
用 pdfplumber + 正则 解析工程量清单 PDF:提取项目编码、综合单价并导出 Excel
xml·pdf·python3.11