java word转pdf
经过几天研究 有以下方式:
POI 格式问题(不考虑)
docx4j 转换后格式问题(待定)
aspose 收费(破解)(待定)
spire.doc 收费(不考虑)
document4j windows(不能跨平台)(不考虑)
jacob windows(不能跨平台)(不考虑)
最开始采用docx4j 到最后结果发现格式有问题,表格中文可以换行,但是数字和字符并没有换行(弃用)
当文档中含有中文字符时,该段代码的执行需要调用操作系统的本地字体库支持,否则所有中文字符都将乱码。
该段代码如果想要在Linux服务器上完美运行,需要给Linux服务器安装中文字体库
如何在Linux环境安装Windows字体库,将在本人的另一篇文章里详细讲解
Java使用Spire.Pdf或Aspose-Words实现Word转换Pdf在Linux服务器上的中文乱码问题
建议将jar包下载下来并上传私服里去
依赖
<dependencies>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>18.2</version>
<classifier>jdk16</classifier>
</dependency>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>18.2</version>
</dependency>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-cells</artifactId>
<version>18.2</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>AsposeJavaAPI</id>
<url>https://repository.aspose.com/repo/</url>
</pluginRepository>
</pluginRepositories>
如果maven坐标还是无法下载 可以试试如下的操作
除了用eclipse添加到maven仓库,我见到还有一种处理方式
内置属性:主要有两个常用内置属性——b a s e d i r 表 示 项 目 根 目 录 , 即 包 含 p o m . x m l 文 件 的 目 录 ; {basedir}表示项目根目录,即包含pom.xml文件的目录;basedir表示项目根目录,即包含pom.xml文件的目录;{version}表示项目版本。
license.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<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>
aspose
public static boolean getLicense() {
boolean result = false;
try {
Resource resource = new ClassPathResource("docx_template"+File.separator+"license"+File.separator+"word-license.xml");
License aposeLic = new License();
aposeLic.setLicense(resource.getInputStream());
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static boolean download() {
getLicense()
Document wordDoc = new Document(inputStream);
PdfSaveOptions pso = new PdfSaveOptions();
wordDoc.save(bos, SaveFormat.PDF);
inputStream.close();
}