Ubuntu服务器用fillpdf填充PDF字段后打印不显示内容求助
Ubuntu 20.04下Python填充PDF后打印不显示内容的解决办法
问题背景
在Ubuntu 20.04服务器用fillpdf/PyPDF2等Python库填充PDF模板并扁平化后,生成的PDF在Windows打开正常,但通过lp命令打印到Kyocera ECOSYS p4060dn时填充字段不显示;Windows填充的PDF在Ubuntu打印则正常,CUPS日志无错误,且Acrobat已设置字段可打印。
可行解决步骤
重新用pdftk做彻底扁平化
多数Python库的flatten=True只是视觉上隐藏表单字段,底层属性未完全清除,导致CUPS打印时忽略。试试用pdftk工具处理:- 安装pdftk:
sudo apt install pdftk-java - 重新扁平化PDF:
pdftk filled.pdf output flattened_final.pdf flatten - 用处理后的文件打印:
lp -d Kyocera_ECOSYS_p4060dn flattened_final.pdf
- 安装pdftk:
用Ghostscript预处理PDF后打印
Python生成的PDF可能在结构上和CUPS渲染器不兼容,用Ghostscript转码后再打印:# 先转码PDF gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER -o processed.pdf filled.pdf # 打印转码后的文件 lp -d Kyocera_ECOSYS_p4060dn processed.pdf也可以直接用Ghostscript打印:
gs -sDEVICE=cups -sOutputFile=%stdout -dNOPAUSE -dBATCH filled.pdf更换打印机官方驱动
开源驱动可能对特定PDF格式支持不足,试试Kyocera官方PPD驱动:- 下载对应型号的Linux官方驱动包
- 解压后找到匹配的PPD文件
- 登录CUPS管理界面(
http://localhost:631),重新添加打印机并选择该官方PPD
改用pdftk命令行填充PDF
放弃Python库,用pdftk直接填充并扁平化,生成的PDF兼容性更好:- 先导出模板的字段列表:
pdftk template.pdf dump_data_fields > fields.txt - 创建填充数据文件
data.fdf,格式示例:%FDF-1.2 1 0 obj<</FDF<< /Fields[ <</T(Season1)/V(2025-2026)>> <</T(Season2)/V(2025-26)>> <</T(MemberName)/V(Test)>> <</T(Address)/V(123 Sesame St)>> <</T(CityStateZip)/V(Birmingham, AK 12345-6789)>> <</T(Number)/V(9999999)>> <</T(Level)/V(1)>> ] >> >> endobj trailer <</Root 1 0 R>> %%EOF - 填充并生成最终PDF:
pdftk template.pdf fill_form data.fdf output filled.pdf flatten
- 先导出模板的字段列表:
内容的提问来源于stack exchange,提问作者Ben B
相关产品推荐
相关产品推荐

