如何通过PHP替换Word文档中的变量并导出为PDF图片?

更新于
2026-09-28 16:20:11
2阅读来源:SEO资讯
  • 内容介绍
  • 相关推荐

本文共计1014个文字,预计阅读时间需要5分钟。

如何通过PHP替换Word文档中的变量并导出为PDF图片?

在線生成合併信息,將word文件中的某些信息透過數據庫讀取計算後填寫到word文檔中,最終在線顯示PDF預覽功能。若實現此需求,請考慮以下方案:

1. 方案一: - 使用Python的`python-docx`庫讀取和編輯word文件。 - 使用`sqlite3`或`pymysql`等數據庫庫讀取數據。 - 將計算結果填寫到word文檔中。 - 使用`reportlab`或`FPDF`等庫生成PDF文件。 - 使用HTML和CSS或者JavaScript實現PDF的線上預覽。

2. 方案二: - 使用Microsoft Office的VBA宏編程,直接在word中操作。 - 使用ADO技術與數據庫連接讀取數據。 - 使用Word的內置功能進行計算和填寫。 - 使用Word的內置功能或外部工具生成PDF文件。 - 使用HTML和CSS或者JavaScript實現PDF的線上預覽。

如何替換文檔:- 使用上述任一方案,讀取原始word文件,並在需要的位置插入新的內容。- 可以通過查找和替換功能,或者使用VBA宏的`Replace`方法來實現文檔的替換。

在线生成合同信息,一个 word 文件里面有些信息需要通过数据库读取计算出并填写到 word 文档中最终显示在线 pdf 预览功能,接下来我交大家如果实现该需求

2、接下来实现如何替换文档内容

我们新建一个 aa.docx 的文档,里面放了一个变量信息

如何通过PHP替换Word文档中的变量并导出为PDF图片?

3、接下来使用 php 来替换这个变量信息 代码如下

... use PhpOffice\PhpWord\TemplateProcessor; ... $path = storage_path('aa.docx'); // 生成world 存放目录 $filePath = storage_path('contract.docx'); // 声明模板象并读取模板内容 $templateProcessor = new TemplateProcessor($path); // 替换模板内容 $templateProcessor->setValue('contract', '北京乙方'); // 乙方 // 生成新的 world $templateProcessor->saveAs($filePath);

这样我们就完成了 word 里面模板变量的替换是不是比较简单呢

4、接下来我们需要处理 word 文档转为 pdf 我也在网上了查了比较多的资料,什么先转为 html 然后通过 其它包的方式或者扩展来转 pdf 确实都能实现,但是有一点 word 转为 html 的时候格式会丢失这就和我们的需求有点偏离,后面转换了方向,使用工具来把 word 转为 pdf 这里我推荐的工具为 unoconv 安装方式如下

apt-get install unoconv #如果报错请求服务器语言设置为 LANG=”en_US.UTF-8″ #使用命令把 word 转为 pdf unoconv -f pdf aa.docx #这个时候在当前目录下就会有一个 aa.pdf 的文件出来 #但是会发现如果是中文的情况下转出来的 pdf 是乱码该如何解决

5、pdf 生成出来中文乱码解决方案,安装一个中文字体

# 把电脑本机的宋体上传到服务器字体目录下 /usr/share/fonts 新建一个目录 win 或者其它,把中文字体上传到该目录下 apt-get install mkfontscale #安装这个工具 # 进入到/usr/share/fonts/win/ 执行命令 mkfontscale && sudo mkfontdir && sudo fc-cache -fv # 然后重启服务器让字体生效 reboot # 最后在执行 unoconv -f pdf aa.docx # 看是不是中文乱码的问题解决了

6、使用 php 的执行 shell 的函数来调用该函数自动生成即可

shell_exec('/usr/binunoconv -f pdf aa.docx')

注:如 php 执行 shell 脚本命令不生效时,此处的问题是用户权限不正确导致不能执行该命令 解决方案如下:

# 编辑 vim /etc/sudoers文件 root ALL=(ALL:ALL) ALL www-data ALL=(ALL) ALL %www-data ALL=(ALL) NOPASSWD:ALL zhouyao ALL=(ALL) ALL zhouyao ALL=(ALL) NOPASSWD:ALL # 增加用户zhouyao 忽略执行命令需要密码 # 增加用户组和用户zhouyao useradd zhouyao -m # -m 创建家目录 # 更改php-fpm的用户和用户组 cd /etc/php/7.1/fpm/pool.d vim www.conf user = zhouyao group = zhouyao # 退出保存 重启php-fpm和nginx,此时在浏览器在执行该文件可以看到pdf下载下来了 # 如pdf中下载的中文是乱码,请自行安装一个中文字体到服务器字体目录即可

总结

到此这篇关于PHP替换Word中变量并导出PDF图片的实现方法的文章就介绍到这了,更多相关PHP替换Word变量并导出PDF图片内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!

本文共计1014个文字,预计阅读时间需要5分钟。

如何通过PHP替换Word文档中的变量并导出为PDF图片?

在線生成合併信息,將word文件中的某些信息透過數據庫讀取計算後填寫到word文檔中,最終在線顯示PDF預覽功能。若實現此需求,請考慮以下方案:

1. 方案一: - 使用Python的`python-docx`庫讀取和編輯word文件。 - 使用`sqlite3`或`pymysql`等數據庫庫讀取數據。 - 將計算結果填寫到word文檔中。 - 使用`reportlab`或`FPDF`等庫生成PDF文件。 - 使用HTML和CSS或者JavaScript實現PDF的線上預覽。

2. 方案二: - 使用Microsoft Office的VBA宏編程,直接在word中操作。 - 使用ADO技術與數據庫連接讀取數據。 - 使用Word的內置功能進行計算和填寫。 - 使用Word的內置功能或外部工具生成PDF文件。 - 使用HTML和CSS或者JavaScript實現PDF的線上預覽。

如何替換文檔:- 使用上述任一方案,讀取原始word文件,並在需要的位置插入新的內容。- 可以通過查找和替換功能,或者使用VBA宏的`Replace`方法來實現文檔的替換。

在线生成合同信息,一个 word 文件里面有些信息需要通过数据库读取计算出并填写到 word 文档中最终显示在线 pdf 预览功能,接下来我交大家如果实现该需求

2、接下来实现如何替换文档内容

我们新建一个 aa.docx 的文档,里面放了一个变量信息

如何通过PHP替换Word文档中的变量并导出为PDF图片?

3、接下来使用 php 来替换这个变量信息 代码如下

... use PhpOffice\PhpWord\TemplateProcessor; ... $path = storage_path('aa.docx'); // 生成world 存放目录 $filePath = storage_path('contract.docx'); // 声明模板象并读取模板内容 $templateProcessor = new TemplateProcessor($path); // 替换模板内容 $templateProcessor->setValue('contract', '北京乙方'); // 乙方 // 生成新的 world $templateProcessor->saveAs($filePath);

这样我们就完成了 word 里面模板变量的替换是不是比较简单呢

4、接下来我们需要处理 word 文档转为 pdf 我也在网上了查了比较多的资料,什么先转为 html 然后通过 其它包的方式或者扩展来转 pdf 确实都能实现,但是有一点 word 转为 html 的时候格式会丢失这就和我们的需求有点偏离,后面转换了方向,使用工具来把 word 转为 pdf 这里我推荐的工具为 unoconv 安装方式如下

apt-get install unoconv #如果报错请求服务器语言设置为 LANG=”en_US.UTF-8″ #使用命令把 word 转为 pdf unoconv -f pdf aa.docx #这个时候在当前目录下就会有一个 aa.pdf 的文件出来 #但是会发现如果是中文的情况下转出来的 pdf 是乱码该如何解决

5、pdf 生成出来中文乱码解决方案,安装一个中文字体

# 把电脑本机的宋体上传到服务器字体目录下 /usr/share/fonts 新建一个目录 win 或者其它,把中文字体上传到该目录下 apt-get install mkfontscale #安装这个工具 # 进入到/usr/share/fonts/win/ 执行命令 mkfontscale && sudo mkfontdir && sudo fc-cache -fv # 然后重启服务器让字体生效 reboot # 最后在执行 unoconv -f pdf aa.docx # 看是不是中文乱码的问题解决了

6、使用 php 的执行 shell 的函数来调用该函数自动生成即可

shell_exec('/usr/binunoconv -f pdf aa.docx')

注:如 php 执行 shell 脚本命令不生效时,此处的问题是用户权限不正确导致不能执行该命令 解决方案如下:

# 编辑 vim /etc/sudoers文件 root ALL=(ALL:ALL) ALL www-data ALL=(ALL) ALL %www-data ALL=(ALL) NOPASSWD:ALL zhouyao ALL=(ALL) ALL zhouyao ALL=(ALL) NOPASSWD:ALL # 增加用户zhouyao 忽略执行命令需要密码 # 增加用户组和用户zhouyao useradd zhouyao -m # -m 创建家目录 # 更改php-fpm的用户和用户组 cd /etc/php/7.1/fpm/pool.d vim www.conf user = zhouyao group = zhouyao # 退出保存 重启php-fpm和nginx,此时在浏览器在执行该文件可以看到pdf下载下来了 # 如pdf中下载的中文是乱码,请自行安装一个中文字体到服务器字体目录即可

总结

到此这篇关于PHP替换Word中变量并导出PDF图片的实现方法的文章就介绍到这了,更多相关PHP替换Word变量并导出PDF图片内容请搜索自由互联以前的文章或继续浏览下面的相关文章希望大家以后多多支持自由互联!