如果这里找不到的话,可以使用命令 fc-list
查看一下有没有,如果没有或者出现该命令不可用的情况,那就需要先安装基础字体:使用命令:yum -y install fontconfig
,完成之后就能看到/user/share/fonts 了
2:找到Windows中的字体,将字体上传到这个 my-fonts中
这里面有很多字体,我们需要的是中文字体,可以选择性上传,选择需要的中文字体上传,比如宋体,要和你文件模板中字体一致就行。上传到my-fonts文件夹下
3:安装
接着根据当前目录下的字体建立scale文件,
切换到my-fonts目录下执行命令:mkfontscale
若提示mkfontscale command not found
,则运行yum install mkfontscale
接着建立dir文件:mkfontdir
使用命令:vi /etc/fonts/fonts.conf
修改配置文件,添加:<dir>/usr/share/fonts/my-fonts</dir>
添加后:
然后运行:fc-cache
fc-list
#查看字体列表
4:赋予权限
chmod 777 /usr/share/fonts/my-fonts
chmod 755 /usr/share/fonts/my-fonts/*
使用命令查看: fc-list :lang=zh
2:Word转PDF实现的几种方式
1:使用POI的方式将word转换为PDF
引入依赖:
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId>
<version>2.0.1</version>
</dependency>
在关闭流之前添加并修改reponse中.docx为.pdf
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode("日报-"+datetime+".pdf", "UTF-8"));
//转为PDF
PdfOptions options = PdfOptions.create();
PdfConverter.getInstance().convert(document, outStream, options);
//下面再是转word里面最后的代码,关闭流
2:使用aspose.words的Document方式将word转换为PDF
1:下载jar包:jar包下载 2:将jar包放入项目中resources目录下的lib文件夹中:
3:将jar包转为library
转换后就会出现上面图中箭头处的样子可以打开。
4:引入jar包依赖:
<dependency>
<groupId>com.aspose.words</groupId>
<artifactId>aspose-words</artifactId>
<version>15.8.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/aspose-words-15.8.0-jdk16.jar</systemPath>
</dependency>
在打包的依赖中添加:
<plugin>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
5:转换
String s = "<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>";
//去除水印
ByteArrayInputStream is = new ByteArrayInputStream(s.getBytes());
License license = new License();
license.setLicense(is);
//将XWPFDocument转换为InputStream
ByteArrayOutputStream b = new ByteArrayOutputStream();
//这里的document=XWPFDocument document,在下面的word转换中
document.write(b);
InputStream inputStream = new ByteArrayInputStream(b.toByteArray());
//这里的Document 的引入是
//import com.aspose.words.Document;
//import com.aspose.words.License;
//import com.aspose.words.SaveFormat;
Document doc = new Document(inputStream);
doc.save(outStream, SaveFormat.PDF);
b.close();
inputStream.close();
//下面再是转word里面最后的代码,关闭流
3:使用documents4j 的方式将word转换为PDF
1:引入依赖:
<!-- word 转 pdf 通过documents4j实现 -->
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.0.3</version>
</dependency>
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-transformer-msoffice-word</artifactId>
<version>1.0.3</version>
</dependency>