引入pom依赖
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>18.6</version>
</dependency>
引入license文件
<?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>
转换代码
import com.aspose.words.Document;
import com.aspose.words.License;
import com.aspose.words.SaveFormat;
import org.springframework.core.io.ClassPathResource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* @description:
* @author: y
* @date: 2023/3/14 13:51
* @version: 1.0
*/
public class WordToPdf {
public static void main(String[] args) throws Exception{
String docPath = "C:\\Users\\54405\\Desktop\\tp\\xch1.doc";
String pdfPath = "C:\\Users\\54405\\Desktop\\tp\\test.pdf";
WordToPdf.docToPdf(docPath,pdfPath);
}
private static boolean getLicense() {
boolean result = false;
InputStream is = null;
try {
is = new ClassPathResource("static" + File.separator + "aspose" + File.separator + "license.xml").getInputStream();
License aposeLic = new License();
aposeLic.setLicense(is);
result = true;
is.close();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (is != null){
is.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
public static boolean docToPdf(String inPath, String outPath) {
// 验证License 若不验证则转化出的pdf文档会有水印产生
if (!getLicense()) {
return false;
}
FileOutputStream os = null;
try {
// 新建一个空白pdf文档
File file = new File(outPath);
os = new FileOutputStream(file);
// Address是将要被转化的word文档
Document doc = new Document(inPath);
// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,EPUB, XPS, SWF 相互转换
doc.save(os, SaveFormat.PDF);
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
if (os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
}
linux部署会有乱码问题
需要将转换无问题的Windows主机的字体拷贝到Linux服务器进行安装
Windows字体库的位置是C:\Windows\fonts
Linux字体库的位置是 /usr/share/Fonts
如果 linux 没有Fonts文件目录,需要执行安装:
yum install mkfontscale
yum install fontconfig
在Font目录下,新建 windowsFonts 目录
将Windows字体库上传到linux的 /usr/share/Fonts/windowsFonts
cd /usr/share/fonts/windowsFonts/
依次执行下边三个命令:
mkfontscale
mkfontdir
fc-cache
完成!