如何用Python在带运单布局的PDF文件上添加字符串?
保留原PDF布局添加文本的解决方案
Python 方案(最适合你的情况)
推荐使用 PyMuPDF(fitz) 库,它能直接在原PDF文件上叠加文本,完全保留原文档的布局、字体和格式,操作比PdfMiner更直观,适合新手快速实现需求。
步骤:
- 安装库:
pip install pymupdf
- 示例代码(在指定位置添加文本):
import fitz # 导入PyMuPDF # 打开原PDF文件 doc = fitz.open("你的运单文件.pdf") # 获取第一页(如需处理多页可循环) page = doc[0] # 设置文本样式(可匹配原PDF的字体、字号,先通过文本提取获取原属性) text = "需要添加的字符串" font_size = 12 font = fitz.Font("helv") # 可替换为原PDF使用的字体,比如"simhei"对应黑体 color = (0, 0, 0) # 黑色,RGB格式 # 指定添加位置(x,y坐标,可通过PyMuPDF提取原文本位置来精准对应) # 比如获取原运单中某个文本块的位置: # words = page.get_text("words") # 返回所有文本块的(x0,y0,x1,y1,text,...) # 取第一个文本块的位置作为参考:x, y = words[0][0], words[0][1] + 20 x, y = 100, 200 # 自行调整坐标 # 在页面上插入文本 page.insert_text((x, y), text, fontsize=font_size, font=font, color=color) # 保存修改后的PDF doc.save("修改后的运单.pdf") doc.close()
如果需要精准匹配原PDF的段落和布局来添加文本,可以先用page.get_text("dict")提取原文档的所有文本布局信息(包括每个文本块的坐标、字体、字号、间距等),再根据这些信息计算新文本的插入位置,完全复刻原布局。
其他语言方案
- Java:使用iText 7库,它是PDF处理的专业工具,能精准控制PDF内容的位置和格式,支持直接在原PDF上编辑或基于原布局重新生成文档。
- C#:使用iTextSharp(iText的.NET版本),功能和iText类似,适合.NET生态的开发者。
内容的提问来源于stack exchange,提问作者Dongwon Kang
相关产品推荐
相关产品推荐

