上海做网站就用乐云seo,网站页面布局的目的,中国建设企业网站,尚海整装为啥口碑那么差一、背景
原先已经简单实现了excel,word,png,pdf合成一个整体pdf的过程。并将它弄到docker容器中。
1、原先入坑的技术栈
php:7.4 (业务有涉及)php第三方包 setasign\Fpdi\Fpdi : 2.3.6 #xff08;pdf合并#xff09;libreoffice : 5.3.6.1ImageMagick: 6.9.10-68
2、…一、背景
原先已经简单实现了excel,word,png,pdf合成一个整体pdf的过程。并将它弄到docker容器中。
1、原先入坑的技术栈
php:7.4 (业务有涉及)php第三方包 setasign\Fpdi\Fpdi : 2.3.6 pdf合并libreoffice : 5.3.6.1ImageMagick: 6.9.10-68
2、原先存在的问题
合成的pdf中文只有宋体合并部分pdf时Fpdi版本过低部分提示失败。
3、最后出坑的技术栈
php:7.4 业务有涉及python: 3.6.8pypdf (python的包)libreoffice : 5.3.6.1ImageMagick: 6.9.10-68
二、入坑关键
libreoffice 是直接通过 yum install libreoffice 安装时缺少对中文包的关注
Fpdi对中文支持不友好,手动改了其他博主说的中文支持的改进年久之后不知道如何升级版本
在执行 libreoffice 进行生成pdf时 缺少 --languagezh-CN 这个关键参数主要是原先不了解libreoffice 有专门的语言包
三、出坑过程
1、去除 setasign\Fpdi\Fpdi 改用python版的 pypdf 新增了一个merge_pdf.py的脚本
import argparse
from pypdf import PdfWriter# 创建参数解析器
parser argparse.ArgumentParser(descriptionMerge multiple PDF files into one.)
parser.add_argument(output_file, helpSpecify the output merged PDF file name.)
parser.add_argument(input_files, nargs, helpSpecify input PDF files to merge.)
args parser.parse_args()# 创建 PdfWriter 对象
merger PdfWriter()# 遍历输入的 PDF 文件进行合并
for pdf in args.input_files:merger.append(pdf)# 写入合并后的 PDF 文件
with open(args.output_file, wb) as output_pdf:merger.write(output_pdf)print(PDF files merged successfully into, args.output_file)使用时
python3 ./merge_pdf.py output.pdf input1.pdf input2.pdf input3.pdf
2、下载新版本的libreoffice
原本打算采用libreoffice24.2但发现当前的centos不支持。只能选稳定的libreoffice7.6.6
去官网下载
Download LibreOffice | LibreOffice - Free Office Suite - Based on OpenOffice - Compatible with Microsoft 有了rpm包后把它们下到服务器上 3、安装libreoffice基础班及中文支持包
先开始基本包进入RPMS目录执行 rpm -Uvh *.rpm 再开始中文包进入RPMS目录执行 rpm -Uvh *.rpm 最后是帮助包进入RPMS目录执行 rpm -Uvh *.rpm 因为原先我有安装libreoffice的v5版本所以当前存在2个版本的libreoffice 对它进行备份并重命名新的版本为默认版本 查看版本 libreoffice --version 当然如果你想共存2个版本就用 libreoffice7.6 --version 执行.docx转pdf并输出到目录out_path libreoffice --headless --invisible --languagezh-CN --convert-to pdf input.docx --outdir out_path 注意上面需要带 --languagezh-CN 因为之前就是忘记加这个才导致一直显示 宋体 4、安装字体因为这个不是本篇的坑所以这里稍微提一下
一般到windows的c:\\windows\Fonts的文件中将中文字体的打包放到centos中/usr/share/fonts/chinese中chinese文件自己建一个
记得清一次缓存
fc-cache -fv