用途:在沙箱内用预装 Python 库读写 PDF,按任务选库:pdfplumber 提取文本/表格/版面/词坐标,pypdf 做页面操作与表单,reportlab 从零创建,PyMuPDF(fitz)渲染页面为图片。
主要能力:pdfplumber 可提取文本与表格,表格可转 DataFrame/Excel,杂乱表格可传策略或先按区域裁剪;pypdf 支持合并、拆分、旋转、裁剪、水印、加密解密、元数据读写;reportlab 支持流式文档与绝对坐标绘制;PyMuPDF 可将页面按 dpi 渲染为 PNG,也可提取文本或渲染子区域。
使用方式:编写简短 Python 片段并通过 exec 运行,输出保存到工作区目录;执行完成后用工具结果中的 Generated artifacts URL 让用户下载。表单填写前先用 get_fields() 判断是否为可填 AcroForm;可填字段用 update_page_form_field_values 并 set_need_appearances_writer(True),复选框/单选用 on-state 字符串而非布尔值;扁平表单用 FreeText 注释叠加,坐标可由 pdfplumber 的 extract_words/rects 获取并换算(pdf_y = 页高 - top)。
限制:扫描件或纯图片 PDF 若 extract_text() 返回空或乱码(如 (cid:NN)),说明无 OCR 引擎且网络关闭,无法恢复文本,应如实告知并停止,不得编造或尝试 pip install。reportlab 内置字体不含 CJK 字形,中文/日文/韩文会渲染成方框;必须注册含字形的 TrueType 字体(不支持 CFF/OpenType 的 .otf),并设置到所有样式与表格 TableStyle、Canvas 的 setFont;若找不到字体应告知而非输出乱码。Markdown/HTML 转 PDF 需外部转换器(soffice/pandoc),通常不存在,可检测后降级为直接用 reportlab 构建。PyMuPDF 不做 OCR。