java把word文件流转为pdf并下载优化篇

发布时间 2023-04-25 14:20:32作者: 一群bug

上一篇方法虽然能用,但是样式会乱,目录也会丢失。故搜集了多篇博客终于找到了优化版本

不会丢失目录,也不会丢失任何东西,样式也能源文件保留

首先这个需要下载一个jar包,链接已放自行下载

链接:https://pan.baidu.com/s/1viRWwiEOdgLUwb9VxZb8RQ?pwd=m4xu 
提取码:m4xu

然后放在系统根目录的lib文件夹下就行

然后pom引入

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-words</artifactId>
    <version>15.8.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
</dependency>

然后需要一个秘钥,文件名就叫做License.xml

新建这文件放入resources文件夹下就可,这个文件网上一大堆,仅限个人使用。

然后编辑

<License>
    <Data>
        <Products>
            <Product>Aspose.Total for Java</Product>
            <Product>Aspose.Words for Java</Product>
        </Products>
        <EditionType>Enterprise</EditionType>
        <SubscriptionExpiry>20991231</SubscriptionExpiry>
        <LicenseExpiry>20991231</LicenseExpiry>
        <SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber>
    </Data>
    <Signature>
        sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=
    </Signature>
</License>

 

新建一个AsposeUtil工具类

public class AsposeUtil {

    /**
     * 加载license 用于破解 不生成水印
     *
     * @author LCheng
     * @date 2020/12/25 13:51
     */
    @SneakyThrows
    private static void getLicense() {
        try (InputStream is = AsposeUtil.class.getClassLoader().getResourceAsStream("License.xml")) {
            License license = new License();
            license.setLicense(is);
        }
    }

    /**
     * word转pdf
     *
     * @param inputStream word文件保存的路径
     * @param response  转换后pdf文件保存的路径
     * @author LCheng
     * @date 2020/12/25 13:51
     */
    @SneakyThrows
    public static void wordToPdf(InputStream inputStream, HttpServletResponse response) {
        getLicense();
        try (OutputStream outputStream = response.getOutputStream();) {
            Document doc = new Document(inputStream);
            doc.save(outputStream, SaveFormat.PDF);
        }
    }
}

之后调用里面的wordToPdf方法就行,传入word文件流和response就行,工具类处理完会把文件流放入客户端