在进行生成文档或者报告的时候,生成的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 {
@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代码如下:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
</dependency>