注意点:上传文件名生成一个别名备用,在文件路径中使用英文或数组

总结下:

1.碰到的坑不少,网上资料很多不全面,就拿linux上安装openoffice来说,需要安装一堆的依赖才成功跑起来

安装的方法给个地址:https://blog.csdn.net/qq_27229113/article/details/82054128

2.刚开始的时候在windows调试,只使用一个openoffice即可,当然windows配置也比较复杂,写过另外一篇,

地址: https://blog.csdn.net/qq_27229113/article/details/81984394,用完后发现咋ewindows上不能支持excel,有点尴尬,这里我没有再去调试,或许是可以的,大家自行调试

3.当部署到linux上的时候,发现,com组下在linxux系统不支持,最后找到一种方法,是java的JODConverter包,用起来也比较方便,安装比较简单,在下面我已经贴出来了,自行参考,

4.字体编码乱码的问题,我将linux系统设置为中文zh_CN.utf8,后面发现不是这个问题,我把centos系统自己增加了微软雅黑和黑体,没效果,openoffice增加字体,没效果,最后将java的jdk下添加字体成功了,这里爬坑挺多的

5.最后说说和自己犯得错,我前期忘了将上传的文件转为英文格式,导致在用php调取命令行的时候出现报错,也就是下面的php调用的时候出现了,所有转为统一规范的英文名字,

希望对大家有用.看了挺多的教程,php转office的方法确实比较少,点个关注!谢谢,转载几个放个我地址

开始搞!!!

JODConverter(Java OpenDocument Converter),可以转换不同Office格式的文档。它利用OpenOffice.org,可以自动化OpenOffice.org支持的所有转换。包括转换为pdf文件,部分支持转换到html文件。

JODConverter下载地址:https://sourceforge.net/projects/jodconverter

openoffice安装请移步:http://www.webyang.net/Html/web/article_336.html

进入目录:cd /opt
下载:wget https://downloads.sourceforge.net/project/jodconverter/JODConverter/2.2.2/jodconverter-2.2.2.zip
解压:unzip jodconverter-2.2.2.zip
进入目录:cd jodconverter-2.2.2/lib
测试转换(test.docx=>test.pdf):java -jar jodconverter-cli-2.2.2.jar test.docx test.pdf
显示:
Sep 20, 2017 3:40:05 PM com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection connect
INFO: connected
Sep 20, 2017 3:40:06 PM com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection disposing
INFO: disconnected

查看,已经有了test.pdf,可以直接访问。

php调用
<?php
$command = "java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar test.docx test.pdf";
//exec($command, $output);
//system($command);
passthru($command);

三个方法任选一种即可,根据需求可以封装成一个通用方法。
注意下,这三个方法可能是php的禁用方法,在php.ini中修改disable_functions即可。

window下还可以试下通过php的COM组件来实现此功能。注意:com组件只支持window环境。 
另外还有很多在线转换的,也可以去看看~

java命令输入java的安装路径(这里要注意jdk的绝对路径,要不然在php代码里面无法唤起jdk,切记)
例如
/opt/local/jdk1.8.0_131/bin/java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /opt/local/nginx-1.12.0/html/content/web/upload/file/999.doc /opt/local/nginx-1.12.0/html/content/web/upload/pdf/999_doc.pdf

下面就是乱码的问题了

字体下载地址: https://download.csdn.net/download/qq_27229113/10643969

编码问题解决

查看系统编码
echo $LANG
设置系统编码
export LC_ALL="zh_CN.utf8"

字体编码问题的尝试

用vim /etc/fonts/fonts.conf,可以看到系统字体文件在/usr/share/fonts,将windows系统字体文件连接到此目录下
ln -s /usr/local/fonts fonts
然后更新缓存:fc-cache
重启openoffice:
 /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
再转换,字体终于显示正确,不再有乱码

问题解决: 
尝试一:此时可能是linux下的jre没有相应的中文字体的问题

尝试二:openoffice字体问题

尝试三:java的jdk字体问题

结论:是jdk的字体,一个是openoffice字体,(有可能个人安装的linux系统有所不同,大家多做尝试)

方法:
下载 simhei.ttf 黑体 
simsun.ttc 宋体 
两种字体文件

1.
找到jre的字体路径:/usr/jdk1.6.0_22/jre/lib/fonts 
新建文件夹fallback:mkdir fallback 
将字体simhei.ttf 、simsun.ttc拷贝到/usr/jdk1.6.0_22/jre/lib/fonts/fallback目录下 
重启openoffice 
ps ax|grep soffice 
显示如下: 
22739 pts/5 S 0:00 /bin/sh /opt/openoffice.org3/program/soffice -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard 
22747 pts/5 Sl 0:01 /opt/openoffice.org3/program/soffice.bin -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard 
23789 pts/5 S+ 0:00 grep soffice 
关闭soffice进程:kill 22739 
以后台启动openoffice: 
/opt/openoffice.org3/program/soffice -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard &;

2.linux系统下字体和openoffice字体都是找的相应目录fonts存放即可

例如:

/usr/share/fonts 下放中文字体

fc-cache-fv 更新字体缓存

好了,希望对大家有用!

php linux OpenOffice+JODConverter+php实现将word/ppt/excel文档转换为pdf相关推荐

  1. ofd转成html,如何把Word或者Excel文档转换为ofd格式?

    回答: 第一种方式 打开要转换的word,点击另存为 选择想保存的位置后,在文件类型中选择"网页文件",点击保存. 然后右击刚刚保存的文件,选择wps表格打开方式. 稍等几分钟就可 ...

  2. windows/linux服务器上java使用openoffice将word文档转换为PDF(亲测可用)

    一. 前言 1. 开发过程中经常会使用java将office系列文档转换为PDF, 一般都使用微软提供的openoffice+jodconverter 实现转换文档. 2. openoffice既有w ...

  3. 仿百度文库方案[openoffice.org 3+swftools+flexpaper](三) 之 使用JODConverter将office文档转换为pdf...

    第三步,使用JODConverter将office文档转换为pdf JODConverter是一个java的OpenDucument文件转换器,可以进行许多文件格式的转换,它利用 OpenOffice ...

  4. java openoffice 打印_java调用openoffice将office系列文档转换为PDF的示例方法

    前导: 发过程中经常会使用java将office系列文档转换为PDF, 一般都使用微软提供的openoffice+jodconverter 实现转换文档. openoffice既有windows版本也 ...

  5. Java 将 Word 文档转换为 PDF 的完美工具

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:为什么魂斗罗只有 128 KB却可以实现那么长的剧情?个人原创+1博客:点击前往,查看更多 来源:https:/ ...

  6. 如何将Microsoft Word文档转换为PDF

    PDFs are handy for distributing documents so that they're seen the same way by all parties. Typicall ...

  7. azw3转换为pdf_干货:如何Java 将 Word 文档转换为 PDF

    在日常工作中,PDF格式良好的视觉阅读性和稳定性使其使用越来越广泛.因此我们常会遇到需要将成型的Word文档转换为PDF格式的情况.本文就将通过使用Java程序来演示如何将Word文档转换成PDF格式 ...

  8. Java将Word文档转换为PDF的完美工具

    引用至:https://mp.weixin.qq.com/s/JIgo3f98HufGJx23mgtvag Java 将 Word 文档转换为 PDF 的完美工具 在日常工作中,PDF格式良好的视觉阅 ...

  9. word、excel文档内容更新技术方案

    需求背景 惯例先说下背景. 生产.研发业务上往往使用大量word和excel文档来作为资料载体,如操作规程.控制手册.卡片--,这些文档会反复使用到一些设备.工艺等参数数据.参数属性主要是名称.编码. ...

最新文章

  1. zabbix3.4.7版本饼图显示问题
  2. unity3d界面部分英文翻译—新手
  3. 《动物森友会》的社交分级,在虚拟世界设计舒适的社交氛围
  4. springboot urlresource_Spring Boot上传文件+部署到Tomcat
  5. 【 Linux 网络虚拟化 】Netns
  6. vscode 左侧图标_1分钟将vscode撸成小霸王
  7. Cisco AP-Sniffer模式空口抓包
  8. php数据的导出到excel,php 数据的导出到excel表格-怎么将php数据导出excel
  9. 会议论文投稿到接收流程【手里有粮心中不慌】
  10. 通信原理-确定信号分析
  11. SSM框架整合仿QQ空间
  12. 传输线模式<TEM TE TM EH HE>
  13. 华为麒麟9000性能提升幅度大,但恐难成安卓一哥
  14. SAP 发出商品业务配置
  15. 百度云盘上传有大小限制 微信文件上传有大小限制 怎么破?
  16. POJ2229 [USACO05 Jan] Sum sets 递推(dp)
  17. 评论:杀毒软件进入网络战国时代
  18. 通过Thinsys瘦客户机连接ProxmoxVE平台登录虚拟机
  19. vue中axios封装请求
  20. 群体机器人kilobots研究文章推荐(群体智能)

热门文章

  1. 关于那封刷屏的论文致谢,这碗鸡汤我干了
  2. 1253号C语言程序设计试题,2016年1月试卷号1253C语言程序设计A.pdf
  3. 有没有人知道芯讯通sim8100的Enhanced COM port是干嘛的
  4. 抖音logo制作教程
  5. C语言经典编程(浙大版C语言第三版)详解
  6. 泰迪杯C题第三问[文本有效性分析] (1)
  7. 计算机科学导论第三版——第一章课后习题(贝赫鲁兹·佛罗赞BehrouzForouzan)(渐水问个人答案笔记csdn)
  8. 路由追踪traceroute分析
  9. 【王道】操作系统OS第二章进程管理(二[1])
  10. Aho-Corasick自动机算法