1、先看问题的出现:
功能是这样滴:上传一个word文件,然后把word文件转成pdf,保存在服务器上,然后打开服务器上的pdf文件地址,在线查看文件出现内容乱码,如下:
2、解决在Linux上word转pdf时出现乱码问题:
看了其他乱七八糟的博客,就用他的解决了这个问题:https://blog.csdn.net/chengxuxuan/article/details/122827866?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122827866-blog-64905214.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-122827866-blog-64905214.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=1
主要就是 在linux上要使用windows的字体。
第一步:把windows系统上的fonts文件上传到 linux服务器上的/usr/share/fonts目录里,如果没有/usr/share/fonts目录,就自己创建一个
windows的fonts所在地址:C盘的windows目录的fonts文件夹,480M还真是有点大
(注意:我的是放在了/usr/share/fonts目录里)
上传到linux服务器的/usr/share/fonts目录后,使用以下命令,把字段缓存到linux里
上传之后在liunx系统下更改这些字体库的权限: sudo chmod 755 /usr/share/fonts/*
fc-cache命令用不了的话,安装一下:
然后一步到味,更新一下字段缓存:
最后一步,要在你的aspose转pdf工具类里,放入下面关键代码:
【
//apose在linux服务器上生成pdf,内容乱码问题,解决代码:将windows的字体上传到linux,取linux上的字体列表 FontSettings fontSettings = FontSettings.getDefaultInstance(); fontSettings.setFontsFolder("/usr/share/fonts" + File.separator, true);
】
String os = System.getProperty("os.name"); //获取当前java运行 if(os != null && os.toLowerCase().startsWith("windows")){ // log.info("当前是windows"); }else if(os != null && os.toLowerCase().startsWith("linux")){ //当前环境:linux系统 // log.info("当前是linux系统"); //apose在linux服务器上生成pdf,内容乱码问题,解决代码:将windows的字体上传到linux,取linux上的字体列表 FontSettings fontSettings = FontSettings.getDefaultInstance(); fontSettings.setFontsFolder("/usr/share/fonts" + File.separator, true); }
重新上传一个word文件,成功在linux上转成pdf:
。
标签:word,windows,fonts,share,乱码,usr,linux,pdf From: https://www.cnblogs.com/spll/p/16800114.html