记一次centos合并excel,word,png,pdf为一个整体pdf的入坑爬坑过程(一直显示宋体问题)。

一、背景

原先已经简单实现了excel,word,png,pdf合成一个整体pdf的过程。并将它弄到docker容器中。

1、原先入坑的技术栈
  • php:7.4 (业务有涉及)
  • php第三方包  setasign\Fpdi\Fpdi : 2.3.6  (pdf合并)
  • libreoffice : 5.3.6.1
  • ImageMagick: 6.9.10-68
2、原先存在的问题
  • 合成的pdf中文只有宋体
  • 合并部分pdf时,Fpdi版本过低,部分提示失败。
3、最后出坑的技术栈
  • php:7.4 (业务有涉及)
  • python: 3.6.8
  • pypdf (python的包)
  • libreoffice : 5.3.6.1
  • ImageMagick: 6.9.10-68

二、入坑关键

libreoffice 是直接通过 yum install libreoffice 安装时缺少对中文包的关注

Fpdi对中文支持不友好,手动改了其他博主说的中文支持的改进,年久之后不知道如何升级版本

在执行 libreoffice 进行生成pdf时  缺少  --language=zh-CN  这个关键参数(主要是原先不了解libreoffice 有专门的语言包)

三、出坑过程

1、去除 setasign\Fpdi\Fpdi 改用python版的 pypdf

新增了一个merge_pdf.py的脚本

import argparse
from pypdf import PdfWriter# 创建参数解析器
parser = argparse.ArgumentParser(description="Merge multiple PDF files into one.")
parser.add_argument("output_file", help="Specify the output merged PDF file name.")
parser.add_argument("input_files", nargs="+", help="Specify 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 --language=zh-CN  --convert-to pdf input.docx --outdir out_path

 注意上面需要带  --language=zh-CN  因为之前就是忘记加这个才导致一直显示 宋体

4、安装字体(因为这个不是本篇的坑,所以这里稍微提一下)

一般到windows的c:\\windows\Fonts的文件中将中文字体的,打包放到centos中/usr/share/fonts/chinese中(chinese文件自己建一个)

记得清一次缓存

​​​​​​​fc-cache -fv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/307667.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VLC-Qt实现简单的视频播放器

VLC-Qt是一个结合了Qt应用程序和libVLC的免费开源库。它提供了用于媒体播放的核心类,以及用于快速开发媒体播放器的GUI类。由于集成了整个libVLC,VLC-Qt具备了libVLC的所有特性, 例如:libVLC实例和播放器、单个文件和列表播放、音…

计算机网络——CSMA/CD协议以及相关习题

目录 前言 引言 CSMA/CD协议 CSMA与CSMA/CD的区别 CSMA/CD流程 前言 本博客是博主用于复习计算机网络的博客,如果疏忽出现错误,还望各位指正。 引言 最早的以太网,许多计算机都连接在一根总线上工作——广播通信方式。 总线的特点想…

DVWA-xss储存型及beef下载(kali)

beef下载 apt-get update apt-get install beef-xss 登录网址是 这里的ip为虚拟机的地址 之后会让你设置密码 如果密码和用户不知道在etc/beef-xss/config.yaml可以查看 这是偷cookie的就是代码 这里是可以修改的不修改的话代码是不全的 通过beef拿到了cookies之后在网页…

【自然语言处理八-transformer实现翻译任务-一(输入)】

自然语言处理八-transformer实现翻译任务-一(输入) transformer架构数据处理部分模型的输入数据(图中inputs outputs outputs_probilities对应的label)以处理英中翻译数据集为例的代码 positional encoding 位置嵌入代码 鉴于transfomer的重要性&#xf…

抖音快手直播整蛊软件插件工具合集(多啦咪/梦歌)

哪一款整蛊直播软件靠谱呢? 相信很多粉丝宝宝们,在做抖音直播或者快手的都在找好用又便宜的直播整蛊插件或者软件,但是好用的几乎少之又少,今天梦歌给大家分享几个,目前在用的也亲测过的几个软件及插件工具给大家参考&…

记录一下MySQL8版本更改密码规则

#查看当前密码策略 show variables like validate_password%;#修改密码等级为low set global validate_password.policy LOW; #注意MySQL8版本这是点,不是_#修改密码长度为6 set global validate_password.length 6;#查询我的数据库中user表host和user select host,…

基于javassm的医院挂号系统

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

大厂Java笔试题之判断字母大小写

/*** 题目:如果一个由字母组成的字符串,首字母是大写,那么就统计该字符串中大写字母的数量,并输出该字符串中所有的大写字母。否则,就输出* 该字符串不是首字母大写*/ public class Demo2 {public static void main(St…

图片批量高效缩放,批量缩放GIF图片并在缩放后以bmp位图保存

在这个数字化时代,图片已经成为我们生活和工作中不可或缺的一部分。无论是制作海报、设计网站,还是日常分享,我们都需要对图片进行处理。然而,面对大量的GIF图片,如何高效地进行缩放并转换为BMP位图,成为了…

Traefik与传统的Edge Router有何不同?

在云原生时代,传统的网络架构和现代的解决方案之间存在明显的差异。特别是在处理网络流量和路由方面,传统的 Edge Router 与像 Traefik 这样的现代反向代理和负载均衡器相比,展现出许多不同的特点。本文将深入探讨 Traefik 与传统 Edge Route…

阿里云账号注册流程,支持多种方式注册,这种方法最简单

2024年阿里云账号注册支持手机号短信验证码注册、淘宝、支付宝和钉钉注册四种方式,使用手机号注册后还需要完成实名认证,如果选择支付宝、淘宝或钉钉注册的话,可以自动调用实名认证信息,免去实名认证步骤。阿里云百科aliyunbaike.…

Tomcat启动闪退的10个解决小技巧

引言 大家好!在我们日常开发中,使用Tomcat作为Web服务器是相当常见的。 然而,遇到Tomcat启动后立即闪退的问题也不是什么稀罕事。 这种情况可能会让人感到困惑和沮丧,特别是当你急需完成一个项目或者修复一个重要的bug时。 不过…

【Java SE】多态

🥰🥰🥰来都来了,不妨点个关注叭! 👉博客主页:欢迎各位大佬!👈 文章目录 1. 多态1.1 多态是什么1.2 多态的意义1.3 多态的实现条件 2. 重写2.1 重写的概念2.2 重写的规则2.3 重写与重…

MP4 封装格式详解

MP4 封装格式详解 MP4 封装格式详解简介概念与术语MP4 整体结构Box 结构Box HeaderBox Data MP4 典型 Boxftyp(File Type Box)moov(Movie Box)mvhd(moov header)traktkhd(track header box&…

vue3大事件项目3

弹框验证 先准备变量: const formModel ref({ cate_name: , cate_alias: }) 还有规则: const rules { cate_name: [ { required: true, message: please input name, trigger: blur }, { pattern: /^\S{1,10}$/, message: must be 1-10, trigger: blur } ], …

太阳光光照试验耐久性老化试验使用太阳光模拟器系统

上海科迎法电气科技有限公司生产的太阳光模拟器系统主要应用于太阳能研究、材料研究、光伏组件测试、空间环境模拟器、植物生长研究、光热模拟等领域,主要表现特征为: 1. 太阳能研究:可用于模拟不同光照条件下太阳能电池的性能测试和研究&am…

高清视频素材,免费下载,收藏好这6个网站。

国内大部分视频素材网站都需要付费购买,这让很多从事视频剪辑的朋友不知道去哪里找免费的视频素材,本期就给大家分享我收藏多年的6个视频素材网站,都可以免费下载,还可以商用,而且国内外的都有哦,有需要的朋…

java-spring 图灵 02 手写spring

01.idea中创建一个maven管理的空项目 02.模拟创建出spring容器类,这里叫wzpApplicationContext,创建的时候会自动加载配置类的数据 public class wzpApplicationContext {private Class configClass;public wzpApplicationContext(Class configClass) …

【Qt 学习笔记】QWidget的windowOpacity属性 | cursor属性 | font属性

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ QWidget的windowOpacity属性 | cursor属性 | font属性 文章编号&#…

解决 MSYS2 Qt 6.7 默认 stylesheet 在 windows 11 下的显示故障

项目场景: MSYS2 升级到 Qt6.7.0,发现显示故障,所有Qt6程序以及 QtCreator的SpinBox都显示不全,Combox的底色不对。 问题描述 2024年4月1日,pacman升级MSYS2后,Qt6遇到风格错误。 msys环境: …