用途
本技能用于处理 PDF 文件,涵盖读取、提取、合并、拆分、创建、旋转、加密、加水印、OCR 等常见操作。文档以 Python 库与命令行工具为核心,给出可直接使用的代码示例与命令。
主要能力
- 读取 PDF 并统计页数(pypdf 的 PdfReader)。
- 提取文本:pypdf 的 page.extract_text(),或 pdfplumber 的 page.extract_text()(可保留布局)。
- 提取表格:pdfplumber 的 page.extract_tables(),可结合 pandas 将表格转为 DataFrame 并导出为 Excel。
- 合并 PDF:pypdf 的 PdfWriter.add_page() 逐页合并,或用 qpdf、pdftk 命令行合并。
- 拆分 PDF:pypdf 每页生成一个文件,或用 qpdf、pdftk 拆分。
- 提取元数据:读取 reader.metadata 的标题、作者、主题、创建者等字段。
- 旋转页面:page.rotate(90) 或 qpdf --rotate、pdftk rotate。
- 创建 PDF:reportlab 的 Canvas 或 Platypus(SimpleDocTemplate、Paragraph、Spacer、PageBreak)。
- OCR 扫描件:pdf2image 转图像后用 pytesseract 识别(需 pip install pytesseract pdf2image)。
- 添加水印:将水印页 merge_page 到每页。
- 提取图片:pdfimages -j。
- 密码保护与解密:pypdf 的 writer.encrypt(),qpdf --decrypt。
- 命令行文本提取:pdftotext(支持 -layout 保留布局、-f/-l 指定页码范围)。
使用方式
以 Python 库为例,安装 pypdf、pdfplumber、reportlab、pandas,按文档示例编写脚本即可执行合并、拆分、提取、创建等操作。命令行工具方面,poppler-utils 提供 pdftotext、pdfimages,qpdf、pdftk 提供合并、拆分、旋转、解密等命令。
适用场景
需要在程序中批量处理 PDF、从 PDF 提取文本或表格、将多份 PDF 合并或按页拆分、生成报告类 PDF、处理扫描件 OCR、为文档加水印或密码保护等。
限制与注意事项
- 填写 PDF 表单需参考 FORMS.md;高级 pypdfium2 与 JavaScript 库(pdf-lib)需参考 REFERENCE.md。
- 在 ReportLab 中不要使用 Unicode 下标/上标字符(如 ₀₁₂、⁰¹²),内置字体不含这些字形,会显示为黑块;应改用 <sub>、<super> 标签,canvas 文本则手动调整字号与位置。
- OCR 需要额外安装 pytesseract 与 pdf2image。
- 文档未提供具体收费、价格、平台或效果信息,这些暂未提供。