使用场景
在进行生成文档或者报告的时候,生成的word想要转换为pdf格式,这样才能保证报告的不可修改性,但是aspose-words的工具的License令人头疼,这篇文章就是解决这个doc转pdf的License的问题。话不多说,直接上实操。
所需资源
首先,需要一个本地的jar包,放在resources下的lib文件夹中,没有的话自己新建一个
这个jar包没有的小伙伴,可以在这边获取下载:aspose-words-21.11-jdk17.jar
代码实现
把本地的jar包导入到项目pom中
<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
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 {@SneakyThrowspublic 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代码如下:
<dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId>
</dependency>