Libreoffice php使用命令行office转pdf,pdf转图片
我用的方法
word 转pdf 使⽤的是 libreoffice 开源office 系统。
使⽤命令是 soffice -h
仅仅使⽤了⼀个⽅法:
--convert-to output_file_extension[:output_filter_name] [-outdir ouput_dir]
files
Batch convert files.
If -outdir is not specified then current working dir is used as output_dir.
Eg. -convert-to pdf *.doc
-convert-to pdf:writer_pdf_Export -outdir /home/user *.doc
1、 1 使⽤java jod
libreoffice 第三⽅office⼯具
安装命令
yum install libreoffice-headless
libreoffice-writer
启动命令
libreoffice5.4 --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --
nofirststartwizard &
javabridge
java -jar /opt/java/webapps/JavaBridge/WEB-INF/lib/JavaBridge.jar
SERVLET_LOCALb8080
查看tomcat的⽅法
tail -f /opt/java/logs/localhost.2017-09-01.log
tail -f /opt/java/logs/catalina.log
java在 /opt/java/
程序在 /opt/java/webapps/ 下, enrollCertDemo 天威CA , jodconverter为转换
word to pdf ⼯具
/root/ghostscript-9.21-linux-x86_64/ 为pdf转图⽚⼯具
参考1
我用的centos系统版本,是6.5版本64位
1、配置centos的yum源之前我的阿里云服务器的centos,好像因为没有配置yum源而使用系统自带的,通过yum install libreoffice没找到Libreoffice安装包(当然,这可能是我系统版本的问题,具体就不得而知了,因为后来搞不定又继续更换了其他版本的centos)。
yum源配置,因为我使用的是阿里云服务器,所以我使用阿里云的yum源。
配置方法:http://mirrors.aliyun.com/help/centos
2、安装Libreoffice
- yum install libreoffice
复制代码
然后我使用soffice命令转化doc测试文档
- soffice --headless --invisible --convert-to pdf doctest.docx
复制代码
然后出现报错了:
- /usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
- Set DISPLAY environment variable, use -display option
- or check permissions of your X-Server
- (See "man X" resp. "man xhost" for details)
- [root@iZ2zec51rnaynn5uqhupucZ ~]# man x
- Cannot open the message catalog "man" for locale "zh_CN.UTF-8"
- (NLSPATH="/usr/share/locale/%l/LC_MESSAGES/%N")
- No manual entry for x
复制代码
后来在这里找到了解决办法:http://superuser.com/questions/6 ... r-cant-open-display
我执行下面这个命令,然后解决了上面的那个报错问题:
- yum install libreoffice-headless
复制代码
然后我再通过soffice命令将doc测试文档转成pdf,终于顺利转化成功!
然而又出现问题了。。。
转化后的pdf文件,我看到了一个一个密密麻麻的小方框。。乱码!
然后我通过“locale -a”查看了下,是不是系统不支持中文的问题。然后发现系统是支持中文的。
- ....
复制代码
那么问题就可能是出现在libreoffice上,然后通过搜索引擎找到了解决办法:http://www.linuxidc.com/Linux/2012-12/77017.htm
- yum -y install libreoffice-langpack-zh-Han*
复制代码
centos上运行上面的命令之后,给libreoffice安装了中文的语言支持,然后顺利地把doc测试文档无乱码地转成了pdf文件。
其实我已经不想说为了解决Libreoffice将office文档转pdf的问题已经让我折腾了三天了。。。Ubuntu和centos系统来回地更换安装测试。不过,还是终于把问题解决了。
剩下的,pdf.js实现文档在线浏览,请看这个帖子:
http://www.hc-cms.com/forum.php?mod=viewthread&tid=14
参考2
http://blog.csdn.net/ljihe/article/details/77250206
项目需要,上传doc、excel、ppt等格式文件到服务器,用户可以在线阅读。经过讨论,决定在上传文件的同时,转换出一份pdf文件保存,用户阅读就只需要展示pdf文件即可,下载可以下载原文件。因为pdf文件需要在web页面上展示还是比较方便的,直接使用html的embed标签就能实现,也可以使用一些pdf.js的插件实现:
- <!DOCTYPE HTML>
- <html>
- <body>
- <embed src="zpdf.pdf" width="100%" height="600">
- </body>
- </html>
首先我们需要将doc等格式的文档转换成pdf,网上搜索一翻,实现方式也就那几种,最主流的就是通过openoffice.org或者libreoffice两种方式实现,其实libreoffice也是从openoffice.org分离出来的,功能上面应该相差不大。对于要实现格式转换,两种库都可以。
我这里直接使用libreoffice的方式。
首先安装libreoffice,我的服务器是centos,直接使用:
- [root@instance-32spzihn /]# yum install libreoffice
提示是否是要安装,执行y就可以了。
一般情况下用yum安装的包都不会是最新版本的,想要安装最新版本,只能够自己下载最新的回来,手动编译安装:
libreoffice官网:http://zh-cn.libreoffice.org/
目前最新版本:LibreOffice_5.4.0_Linux_x86-64_rpm.tar.gz
- [root@instance-32spzihn src]# tar -zxvf LibreOffice_5.4.0_Linux_x86-64_rpm.tar.gz
- [root@instance-32spzihn src]# cd LibreOffice_5.4.0.3_Linux_x86-64_rpm/RPMS
- [root@instance-32spzihn RPMS]# yum install *.rpm
安装完成后执行:
- [root@instance-32spzihn /]# /usr/bin/libreoffice --invisible --convert-to pdf zzz.docx
如果是自行编译需要带版本号:
- [root@instance-32spzihn /]# /usr/bin/libreoffice5.4 --invisible --convert-to pdf zzz.docx
具体情况可以先用 find / -name 'libreoffice*' 查找出相关的执行程序再处理。
竟然报错:
- [root@instance-32spzihn /]# /usr/bin/libreoffice --invisible --convert-to pdf zzz.docx
- /usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
- Set DISPLAY environment variable, use -display option
- or check permissions of your X-Server
- (See "man X" resp. "man xhost" for details)
此时只需要安装另外一个库即可解决:
- [root@instance-32spzihn /]# yum install libreoffice-headless
再执行转换命令,转换成功。
sz zzz.pdf,下载pdf回到本地打开发现中文乱码,这是因为缺少中文字体支付所致,所以先把 c:\Windows\Fonts文件夹复制一份到其它盘,然后打包成Fonts.zip,通过rz Fonts.zip 将压缩包传到服务器上面。
- [root@instance-32spzihn /]# cd /usr/share/fonts
- [root@instance-32spzihn fonts]# rz
- [root@instance-32spzihn fonts]# unzip Fonts.zip
- [root@instance-32spzihn fonts]# mv Fonts win
- [root@instance-32spzihn fonts]# cd win
- [root@instance-32spzihn win]# chmod -Rf 755 *
- [root@instance-32spzihn win]# mkfontscale
- [root@instance-32spzihn win]# mkfontdir
- [root@instance-32spzihn win]# fc-cache –fv
若没有生效可以试下重启服务器,再重新执行转换命令就可以了。
完成对文件转换后,那接下来就要将此功能加入项目开发上面,当前需要加入到一个php项目:
- $retval = 1;
- // exec() might be disabled
- $cmd = '/usr/bin/libreoffice --invisible --convert-to pdf zzz.docx';
- if (function_exists('exec')){
- @exec($cmd, $output, $retval);
- }
- // Did it work?
- if ($retval > 0){
- exit('process_failed');
- }
具体实现逻辑可以根据自己实际需求做更改,原理就是程序内执行shell命令处理。
转载于:https://www.cnblogs.com/jackduan/p/7755446.html
Libreoffice php使用命令行office转pdf,pdf转图片相关推荐
- pdf横向打印java_C#使用adobe acrobat reader命令行在横向打印PDF文档
我有一个C#.NET应用程序打开adobe acrobat reader以打印PDF文件 . 我正在使用ProcessStartInfo组件: string args = "/s /h /t ...
- linux合并pdf命令,科学网—[转载]linux下利用命令行工具pdftk对PDF进行合并分割(转载) - 崔鹏碧的博文...
pdftk是非常好用的PDF页面操作工具,能够切割.合并.提取指定页面等. 常用包括的功能如下:合并 PDF: 分割 PDF 页面: 旋转 PDF 页面: PDF 带密码访问: PDF 填加密码: 用 ...
- 利用命令行工具pdftk对PDF进行合并分割
pdftk是非常好用的PDF页面操作工具,能够切割.合并.提取指定页面等. 参考:PDF 合并和分割工具--PDFtk 参考官网:PDFtk server: the pdf tool kit 常用包括 ...
- linux pdf word,linux命令行大全WORD版本.pdf
linux 命令行大全WORD 版本 下达指令 command [-options] parameter1 parameter2 ... command:命令或者可执行文件 options:选项 pa ...
- JMeter命令行生成监控CPU和内存图片
Meter 命令行执行脚本得到的报告中,是没有CPU.内存使用率等监控数据的,我们可以使用JMeter插件帮忙. 首先,需要下载JMeterPlugins-Standard.jar,jmeter-pl ...
- inkscape命令行转曲转pdf
inkscape xxx.svg --export-text-to-path -o xxx.pdf
- linux用命令下载图片,Linux命令行中采集指定页面的图片地址及图片下载
获取指定页面中的图片地址: curl news.baidu.com | grep -Eio '(http|ftp|https)://[A-Za-z0-9_./]+(.jpg|.png|.gif)' 复 ...
- wkhtmltopdf使用方法,页脚 加页码 pdftk合并pdf命令行操作
wkhtmltopdf pdftk使用方法 htmltopdf 安装配置路径 htmltopdf 打开官网:https://wkhtmltopdf.org/downloads.html 安装配置路径 ...
- apache pdfbox_Apache PDFBox命令行工具:无需Java编码
apache pdfbox 在博客文章Apache PDFBox 2中 ,我演示了将Apache PDFBox 2用作从Java代码中调用的库来操作PDF. 事实证明,Apache PDFBox 2还 ...
最新文章
- 清华大学计算机64班,清华大学计算机系的论比文评价.ppt
- HDU 2573 HDOJ 2573 Typing ACM 2573 IN HDU
- 错误信息Make an entry in Field Text Area
- [ 懒人神器 ] —— OO一键build:.zip - .jar
- 【软件开发底层知识修炼】十九 GDB调试从入门到熟练掌握超级详细实战教程学习目录
- [HTTP] Nginx代理以及面向未来的HTTP
- Python中selenium的玩法,小朋友看了都说学会了
- 拓端tecdat|R语言极值理论:希尔HILL统计量尾部指数参数估计可视化
- lc滤波器是利用电感的感抗_“电感”的作用与使用方法
- ubuntu的文件路径
- 程序设计方法和程序分析
- MASM DEBUG LINKER免费下载
- Linux4.14加密框架中的主要数据结构(1)—— struct crypto_alg(通用算法)
- python爬取12306火车票信息_python利用selenium+requests+beautifulsoup爬取12306火车票信息...
- 一点一滴岗位测试答案_【一点资讯】部编版语文六年级下第三单元综合测试卷(含答案)...
- python抓取图片数字_python 实现识别图片上的数字
- JAVA可以赋值分数吗,信息技术支持下的教学反思超星尔雅网课答案
- 学习MySQLl06《存储过程与事务》
- chrome控制台中console
- 国内常见的IT认证都有哪些?这几个入大厂必备