项目中有一个在线上传并预览实验报告的需求,因为项目部署在ubuntu上面,所以借助libreoffice实现word转pdf,然后使用pdf.js在线预览pdf文档.

Python里面调用libreoffice转换Word->pdf的方法:

subprocess.call(
                'export HOME=/home/luces; timeout 120s lowriter --headless --convert-to pdf "{}"'.format(self.src) + ' --outdir "{}"'.format(

self.dest), shell=True)

timeout 120s是转换超时时间,设置原因是libreoffice转换失败并不会主动退出,而是卡住,导致系统很慢.

export HOME=/home/luces;这句话是因为项目部署在容器里面的时候,默认的系统操作用户时root,而我们的项目的用户并不是,会导致转换失败.

--outdir的作用是指定转换出来的pdf存放目录.

在转换文档格式的时候遇到错误,转换中文格式乱码,linux下缺乏中文字体.我的解决办法如下:

我们把Windows下的字体C:\Windows\Fonts下的宋体,即simsun.ttc复制到当前用户的主文件下。

以打开终端:

sudo cp simsun.ttc /usr/share/fonts

cd /usr/share/fonts

修改权限

sudo chmod 644 simsun.ttc

更新字体缓存:

sudo fc-cache -fv

但是,这样会破坏系统的默认字体设置,特别是Ubuntu,由于宋体的优先级高于文泉驿,系统会优先抓取宋体,默认漂亮的光滑矢量字体会变成点矩阵的宋体。怎么办?

2.最完美的方案

Linux是多用户的,但是我们自己的电脑通常只用一个普通用户,so,我们只需让字体对自己生效就行了,这样不会破坏系统字体设置。

打开主文件夹

按Ctrl+H显示隐藏文件夹,打开.libreoffice (也有的在.confing/libreoffice,比如ubuntu 12.04)

依次进入到3/user,新建文件夹fonts

然后把字体复制到fonts这个文件夹下即可.(这一部分来自https://blog.csdn.net/frylion/article/details/8207259)


在线预览pdf,能够使用pdf.js,但是最简单的办法时使用pdf文件夹自带的viewers.html.使用方法如下:

                    <iframe name="myframe" src="/site_media/static/expt_report/js/pdf/generic/web/viewer.html?file={{pdf_path}}" width="100%" height="800"></iframe>

这样就实现在线预览pdf了,并且效果也很好.

还有一点,libreoffice不支持并发,所以当两个文件同时转换的时候会出问题,因此在对文件转换时需要加锁.我现在是对某个文件进行加锁.处理完成释放锁

libreoffice word转pdf时中文乱码问题解决相关推荐

  1. linux中安装openoffice,及解决转pdf时中文乱码或者中文不显示问题【离线】

    linux中安装openoffice[离线] 目录安装openoffice启动openoffice查看openoffice运行状态启动时可能出现的问题openoffice在转pdf时,中文乱码或者中文 ...

  2. EBS 报表输出PDF时中文乱码

    运行请求输出报表,查看输出文件,打开PDF文件 中文都是 ? 符号. 原因:JVM运行时缺少了True Type字体(.ttf)文件导致的. 解决方法:只要将字体拷贝相应的字体文件到JRE环境下即可. ...

  3. 关于JAVA导出word或者excel文件中文乱码问题解决

    搜了一下,发现网上都是解决文件名乱码的问题,这里记录一下从数据库查询出的数据写入文件中文乱码的问题 个人采用的是对象查询出来以后转为json字符串,然后字符串进行转码,再转成jsonObject格式 ...

  4. bootstrap使用tableExport导出pdf时中文乱码问题

    前言 最近拿到了一个任务,让处理一下公司的系统平台问题.问题就是页面导出PDF文件,有中文的话显示的都是乱码.因为公司的项目都是给国外客户使用的,所以我估计从设计到测试都没有考虑中文的问题.但是为啥现 ...

  5. docx4j word转pdf解决中文乱码问题(包括宋体(正文))

    docx4j 是个非常好用的docx操作包,我主要用来做docx转pdf,但是发现中文会有乱码,原因是因为word里面的中文字体名也是中文的,但是从本地字体库里面拿到的字体名是英文的,所以需要做个映射 ...

  6. FastReport 导出pdf时中文乱码的解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 我使用的FastReport的版本为5.4.6.在导出pdf的时候,中文全是乱码,在网上查找资料,都是很老的资料,各种改源码. ...

  7. python读写csv时中文乱码问题解决办法

    参考1 参考2 参考3 CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和 ...

  8. python csv 中文乱码_python读写csv时中文乱码问题解决办法

    CSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 "," 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开.CSV ...

  9. WORD另存为PDF时出现乱码的解决方案

    问题描述:在服务器上用WORD2007打开文档,另存为PDF,PDF中的部分内容会出现乱码:而在本地电脑上进行同样的操作却不会出现乱码. 原因:这是由于服务器上的OFFICE2007没有安装SP3补丁 ...

  10. Mac下使用SecureCRT时中文乱码问题解决

    MAC自带终端在本地没有乱码问题,使用SecureCRT会乱码:则可以通过如下方式解决. 1.Mac本地设置 nisjdeMacBook-Pro:~ nisj$sudo vim /etc/profil ...

最新文章

  1. poj3686(最小权值完美匹配)
  2. RocketMQ-什么是死信队列?怎么解决
  3. linux命令详解——top
  4. shell脚本自动备份MySQL数据库
  5. Python min() 方法
  6. java excel条件格式_Java 使用条件格式高亮Excel单元格
  7. 进程间通信方式_第四十九期-Linux内核中的进程概述(4)
  8. sql语句 isnull(列名,'')='' /STUFF的意思
  9. 【数据分析师-数据分析项目案例一】600w+条短租房数据案例分析
  10. 全网唯一, MATLAB绘制好看的弦图
  11. Python入门学习二:列表
  12. 计算机毕业论文个人小结2500字,毕业论文个人小结
  13. win8dns服务器没响应,win8笔记本dns服务器未响应怎么办
  14. 瑞吉外卖项目学习笔记:P1-项目介绍
  15. 物联网开发 7 旗点云物联网云平台
  16. 解决ausu MT7630 linux(ubuntu)下 wifi无法使用
  17. 页面报错:无法设置未定义或 null 引用的属性“*****”
  18. 解决由于找不到amd_ags_x64.dll,无法继续执行代码。重新安装程序可能会解决此问题,地平线(Forza Horizon 5)
  19. POJ 3009 Curling 2.0 {深度优先搜索}
  20. ADS学习:电磁仿真设计

热门文章

  1. Spring使用json转换工具
  2. MacOS Big Sur 11.2.2 (20D80) With and OC 0.6.7 原版DMG黑苹果镜像
  3. 近3年微软与谷歌的发展对比分析
  4. 基于Android的健康打卡系统,基于Android平台的个人健康管理系统
  5. 现代操作系统 第十章 UNIX、Linux 和 Android 下
  6. 智能制造与大数据——数据采集实现数字化
  7. 搜狗拼音输入法下载|搜狗拼音输入法下载
  8. 结合eXeScope打造个性flash发布后的应用程序exe文件
  9. u3d商业级开心消消乐源码开发总结
  10. Linux内核启动内核解压过程分析