如何用PyPDF2、ReportLab等Python模块为PDF添加自定义文档属性?
用PyPDF2和ReportLab添加PDF自定义文档属性
当然可以,这两个库都支持添加或创建你需要的键值对形式的自定义文档属性,具体实现方法如下:
PyPDF2:修改已有PDF的自定义属性
PyPDF2可以读取现有PDF的元数据,添加自定义属性后重新保存。示例代码:
from PyPDF2 import PdfReader, PdfWriter # 读取源PDF reader = PdfReader("input.pdf") writer = PdfWriter() # 复制所有页面到writer for page in reader.pages: writer.add_page(page) # 添加自定义属性(键值对形式) custom_metadata = reader.metadata | { "/CustomName1": "CustomValue1", "/CustomName2": "CustomValue2" } writer.add_metadata(custom_metadata) # 保存修改后的PDF with open("output_with_custom_props.pdf", "wb") as output_file: writer.write(output_file)
注意:自定义属性的键需要以/开头,这是PDF元数据的规范要求。
ReportLab:创建新PDF时添加自定义属性
如果是从头创建PDF,ReportLab可以直接在生成文档时嵌入自定义属性。示例代码:
from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter # 创建Canvas对象 c = canvas.Canvas("new_pdf_with_props.pdf", pagesize=letter) # 添加基础文档属性(可选) c.setTitle("示例PDF") c.setAuthor("测试作者") # 添加自定义属性,通过文档的info字典实现 c._doc.info[0].update({ "CustomProp": "MyCustomValue", "ProjectID": "PROJ-12345" }) # 绘制内容示例 c.drawString(100, 750, "这是带自定义属性的PDF") # 保存PDF c.save()
生成的PDF会包含你定义的键值对属性,在PDF阅读器的文档属性中可以查看。
内容的提问来源于stack exchange,提问作者Rapid1898
相关产品推荐
相关产品推荐

