文章目录

  • 方法一、使用phpword和tcpdf
    • 1. 使用composer 安装 phpword和tcpdf
    • 2. 示例代码 (试例框架是laravel,以下文件默认是放置在public中)
    • 3. 中文乱码 - 设置字体
  • 方法二、使用unoconv将 word转pdf (Centos 8)
    • 1. 安装libreoffice
    • 2.安装 unoconv
    • 3.安装字体 (若转换的文件出现)
    • 4. 使用代码将文件转换
  • 总结

方法一、使用phpword和tcpdf

1. 使用composer 安装 phpword和tcpdf

 composer require phpoffice/phpwordcomposer require tecnickcom/tcpdf

2. 示例代码 (试例框架是laravel,以下文件默认是放置在public中)

//           你的初始文件地址$word = 'test.docx';\PhpOffice\PhpWord\Settings::setPdfRendererPath(base_path('vendor/tecnickcom/tcpdf'));//设置转换pdf的类库名(DomPDF、MPDF、TCPDF)需要下载对应的类库\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');//             加载word文件$wordPdf = \PhpOffice\PhpWord\IOFactory::load($word);
//          读取生成的docx文件 并且指明要生成的文件格式$pdfWriter = \PhpOffice\PhpWord\IOFactory::createWriter($wordPdf , 'PDF');
//          设置文字字体,文字大小$pdfWriter->SetFont('wryh','',20,'',false);
//          生成pdf文件 的保存地址$temp_path = 'test.pdf'
//          文件保存        $pdfWriter->save($temp_path);return $temp_path;

3. 中文乱码 - 设置字体

乱码一般是因为字体问题
  1. 从网上下载一个ttf文件,本文提供一个微软雅黑的字体供各位看官临时使用 字体下载链接
  2. 找到 /vendor/tecnickcom/tcpdf/tools 的位置,将字体文件放在这个文件夹下,在此处打开窗口执行命令
    php ./tcpdf_addfont.php -b -t wryh -i wryh.ttf
    之后就可以在 /vendor/tecnickcom/tcpdf/fonts/ 文件夹下找到三个同名的 wryh.ctg.z,wryh.php,wryh.z文件
  3. 然后你在执行代码时,设置
    $pdfWriter->SetFont(‘wryh’,‘’,20,‘’,false);
    指明使用该字体即可。

方法二、使用unoconv将 word转pdf (Centos 8)

1. 安装libreoffice

  1. 安装libreoffice
先为安装 libreoffice 创建一个文件夹,用以保存下载的压缩包 mkdir libreofficecd libreoffice/# 下载 libreoffice 安装包wget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.3.1/rpm/x86_64/LibreOffice_7.3.1_Linux_x86-64_rpm.tar.gzwget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.3.1/rpm/x86_64/LibreOffice_7.3.1_Linux_x86-64_rpm_sdk.tar.gzwget https://mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/7.3.1/rpm/x86_64/LibreOffice_7.3.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz# 解压安装包tar -zxvf LibreOffice_7.3.1_Linux_x86-64_rpm.tar.gztar -zxvf LibreOffice_7.3.1_Linux_x86-64_rpm_sdk.tar.gztar -zxvf LibreOffice_7.3.1_Linux_x86-64_rpm_langpack_zh-CN.tar.gz# 安装命令yum localinstall LibreOffice_7.3.1.3_Linux_x86-64_rpm/RPMS/*.rpmyum localinstall LibreOffice_7.3.1.3_Linux_x86-64_rpm_sdk/RPMS/*.rpmyum localinstall LibreOffice_7.3.1.3_Linux_x86-64_rpm_langpack_zh-CN/RPMS/*.rpm
  1. 为 libreoffice 配置全局变量
 注:要找到你安装的环境中的 libreoffice下的program的位置vi /etc/profile# 配置文件中插入export PATH=$PATH:/opt/libreoffice7.3/program (填写自己环境的位置)# 使环境变量生效source /etc/profile
  1. 检查是否安装成功 :
  soffice --version能显示出来 libreoffice 的版本,则安装成功

2.安装 unoconv

  1. centos 8 中 使用 yum 安装 unoconv 无效,所有我么使用wegt 下载压缩包,解压之后安装
 wget https://github.com/unoconv/unoconv/archive/master.zipunzip master.zipcd unoconv-master/make install
  1. 使用命令执行,使得word文件转换格式为pdf
 解释: unoconv -f (你的格式) -o 新文件存储的位置 要转换的文件的位置;unoconv -f pdf -o /root/1.pdf /root/1.docx查看新文件是否存在,确认是否转换成功

3.安装字体 (若转换的文件出现)

  1. 创建字体目录,将自己的字体文件上传至该文件夹下
 mkdir -p /usr/share/fonts/win
  1. 执行以下命令,使字体生效
 mkfontscale mkfontdirsudo fc-cache -fv

【报错】
若执行 mkfontscale 出现报错 mkfontscale not found
则执行下列命令

 # 安装mkfontscaleyum install mkfontscale # 安装fontconfig yum install fontconfig

4. 使用代码将文件转换

  /** 文件格式转换* @param $old_file 旧文件  当前项目绝对地址* @param $new_file 新文件  当前项目中的绝对地址* @param $file_format 指定转换的格式*/protected static function  File_conversion($old_file,$new_file,$file_format='pdf'){$old_path = public_path($old_file);$new_path = public_path($new_file);shell_exec(" unoconv -f ".$file_format." -o ".$new_path." ".$old_path);}

总结

方法一:

  • 优点:操作较为简单,只需安装一些php的扩展就可以使用,
  • 弊端:但是该方法只适合一些word中内容比较简单的进行转义为pdf,因为数据格式复杂之后,会容易发生文字错位的问题。

方法二:

  • 优点:支持word中任何格式的数据进行转换,且不容易出现错位

  • 弊端:需要在服务器中安装软件(本文已centos 8为例,讲解。)可以根据自己的需求,选择用那种方式。

  • 注意 :设置字体时,最好与转换前文件中的字体一致

若上述yum命令执行的时候报错:
Error: Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
则说明是官方镜像地址被移动了,不在mirrorlist 这里了,此时我们只需执行,将地址切换到vault 去。
(阿里的镜像因为对centos8环境支持的停止,原本的镜像就被移动了。)

cd /etc/yum.repos.d/
sudo sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sudo sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

PHP word转pdf相关推荐

  1. openOffice word转pdf,pdf转图片优化版

    之前写了一个版本的,不过代码繁琐而且不好用,效率有些问题.尤其pdf转图片速度太慢.下面是优化版本的代码. spriing_boot 版本信息:2.0.1.RELEASE 1.配置信息: packag ...

  2. python word转pdf

    原理 使用python win32 库 调用word底层vba,将word转成pdf 安装pywin32 pip install pywin32 python代码 from win32com.clie ...

  3. 【源码】Word转PDF V1.0.1 小软件,供新手参考

    昨天有一朋友让我帮忙找一款Word转PDF的软件,今天自己捣鼓出点成果封装个Helper供大家使用~ 开源地址:https://github.com/dunitian/WordConvertPDF 软 ...

  4. word转pdf后公式出现乱码怎么办?

    我们知道很多场合下,pdf更适合阅览,但是当我们将我们的文档或者论文转换为pdf格式的时候,有的时候某些公式会出现乱码,如下: 这样是送去盲审,岂不是死的很惨,好了如何解决呢? 一般word找pdf的 ...

  5. 如何实现Word、PDF,TXT文件的全文内容检索?

    作者 | HENG 来源 | https://www.cnblogs.com/strongchenyu/p/13777596.html 简单介绍一下需求 能支持文件的上传,下载 要能根据关键字,搜索出 ...

  6. java flexpaper_java web word文件 pdf文件在线预览源码(flexpaper)

    [实例简介]java web word文件 pdf文件在线预览源码 经过测试 [实例截图] [核心代码] BrowsenOnline html, body{ height:100%; } body { ...

  7. Word转PDF及SWF在线浏览——Flash Paper

    http://flexpaper.devaldi.com/?ref=FlexPaper 之前在项目中研究使用了一套word转PDF,然后将PDF转成SWF的方法,最终实现SWF的在线浏览.自己还有些洋 ...

  8. java中ofd文件转pdf_word文件转pdf怎么转?这一招轻松搞定Word转PDF

    word文件转pdf怎么转?在自己电脑中编辑好的Word文档,在其他人的电脑中打开总出现文件内容乱码的情况,这是由于文件设备不兼容导致的.解决这个问题的最好方法就是将Word转换成PDF文件,可以提高 ...

  9. php word转pdf linux,Linux平台中使用PHP把word转pdf的实现方法

    Linux平台中使用PHP把word转pdf的实现方法 1.ubantu下安装libreofficesudo apt-get install libreoffice 2.命令行执行word转pdf 将 ...

  10. 【python自动化办公02】word操作-word转pdf

    点击上方"AI搞事情"关注我们 清明 Python调用Win32com实现Office批量转PDF https://www.cnblogs.com/lolipop2019/p/14 ...

最新文章

  1. mysql insert into 变量+1_如何在MySQL INSERT语句中包含PHP变量
  2. python爬虫案例-Python爬取租房数据实例,据说可以入门爬虫的小案例!
  3. 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler...
  4. [BLE--Link Layer]物理信道
  5. Python 列表count()函数元素次数统计
  6. 【安全】LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol
  7. cba篮球暂停次数和时间_为什么足球赛的观赏性比篮球更强?这三点是主要原因...
  8. hashcode的作用_【09期】说说hashCode() 和 equals() 之间的关系?
  9. 你的核心竞争力真的是技术么?
  10. Ubuntu系统下载(清华大学开源软件镜像站)(ubuntu-20.04.1-desktop-amd64.iso)
  11. 景观专业设计师必备SketchUp插件合集,你都用过吗?
  12. docker使用国内加速器的正确姿势
  13. JavaScript数组map方法
  14. c语言中取小数函数,C / C++ 保留小数函数(setprecision(n)的一些用法总结)
  15. JAVA:List复制
  16. 计算机ps二级考试试题,2020年3月计算机等级Photoshop考试模拟试题及答案
  17. Freemarker讲解
  18. 摄像头视角鼠标滚轮拉伸fieldOfView
  19. 智能灌溉系统数字化浇水
  20. Servlet GET和POST请求

热门文章

  1. 关于字体的一些知识,以及分享一些免费可商用字体
  2. excel 工作表保护密码破解代码
  3. 在线打字练习网站介绍
  4. JAVA计算机毕业设计美发门店管理系统Mybatis+系统+数据库+调试部署
  5. 数据库:SQL数据查询(详细、全面)
  6. 使用Animation编辑器编辑动画
  7. java datagrid导出excel_Datagrid数据导出到Excel文件给客户端下载的几种方法
  8. python与机械教育初探_《Python与机器人程序设计》
  9. 软件项目测试报价单,某软件项目报价单
  10. 手机app系统软件开发报价单及方案:费用明细