文章综合了其他网友的方法,方便观看,后面附有链接
用到的jar aspose-words-15.8.0-jdk16.jar
服务器字体设置:
yum install -y fontconfig mkfontscale
cd /usr/share/fonts目录
把windows机器中 C:\Windows\Fonts里面的内容,全部拷贝到linux的上述目录(/usr/share/fonts中)
mkfontscale
mkfontdir
fc-cache
服务器不需要重启,但是安装完新字体需要执行
mkfontscale
mkfontdir
fc-cache
服务器字体目录图:
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>
pom.xml打包
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>font/*.ttf</exclude>
<exclude>font/*.woff</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>font/*.ttf</include>
<include>font/*.woff</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
<nonFilteredFileExtension>woff</nonFilteredFileExtension>
<nonFilteredFileExtension>woff2</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
<version>3.2.0</version>
</plugin>
代码(适当自行修改):
public static boolean doc2pdf(String inPath, String outPath) {
// 验证License 若不验证则转化出的pdf文档会有水印产生
if (!getLicense()) {
return false;
}
FileOutputStream os = null;
try {
//把项目下的字体拷贝到服务器字体目录下
ClassPathResource resource = new ClassPathResource("font" + File.separator + "msyh.ttf");
InputStream is = resource.getInputStream();
String linuxFontBasePath = "/usr/share/fonts";
File fontFile = new File(linuxFontBasePath + File.separator + "msyh.ttf");
if (!fontFile.exists()) {
FileCopyUtils.copy(FileCopyUtils.copyToByteArray(is),fontFile);
}
File file = new File(outPath); //新建一个空白pdf文档
os = new FileOutputStream(file);
long old = System.currentTimeMillis();
Document doc = new Document(inPath);
Environment environment = SpringContextUtil.getBean(Environment.class);
String[] activeProfiles = environment.getActiveProfiles();
//非开发环境则拷贝字体到服务器系统字体目录中
if (null != activeProfiles && !"local".equals(activeProfiles[0])) {
FontSettings.setFontsFolder(linuxFontBasePath + File.separator, true);
}
//sourcerFile是将要被转化的word文档
doc.save(os, SaveFormat.PDF);
os.close();
long now = System.currentTimeMillis();
System.out.println("共耗时:" + ((now - old) / 1000.0) + "秒"); //转化用时
} catch (Exception e) {
e.printStackTrace();
return false;
}finally {
if (os != null) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return true;
}
参考地址:
地址一:https://blog.youkuaiyun.com/somdip/article/details/100098976
地址二:https://blog.youkuaiyun.com/somdip/article/details/100098976
地址三:https://blog.youkuaiyun.com/somdip/article/details/100098976