You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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工具处理:

    1. 安装pdftk:sudo apt install pdftk-java
    2. 重新扁平化PDF:
      pdftk filled.pdf output flattened_final.pdf flatten
      
    3. 用处理后的文件打印:lp -d Kyocera_ECOSYS_p4060dn flattened_final.pdf
  • 用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驱动:

    1. 下载对应型号的Linux官方驱动包
    2. 解压后找到匹配的PPD文件
    3. 登录CUPS管理界面(http://localhost:631),重新添加打印机并选择该官方PPD
  • 改用pdftk命令行填充PDF
    放弃Python库,用pdftk直接填充并扁平化,生成的PDF兼容性更好:

    1. 先导出模板的字段列表:pdftk template.pdf dump_data_fields > fields.txt
    2. 创建填充数据文件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
      
    3. 填充并生成最终PDF:pdftk template.pdf fill_form data.fdf output filled.pdf flatten

内容的提问来源于stack exchange,提问作者Ben B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 09:22:44