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

如何用Python向已有PDF文件添加AcroForm可编辑文本框

给已有PDF添加AcroForm可编辑文本框

已实现功能

  • 新建PDF并添加可编辑文本框
  • 给已有PDF添加不可编辑文本戳

新建PDF添加可编辑文本框代码

from reportlab.pdfgen import canvas
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4

pdf = canvas.Canvas("my_file.pdf", bottomup=0)
pdf.drawString(100, 100, "blablabla")
x = pdf.acroForm
x.textfield(value = "hello world!", fillColor = colors.yellow, borderColor = colors.black, textColor = colors.red, borderWidth = 2, borderStyle = 'solid', width = 500, height = 50, x = 50, y = 40, tooltip = None, name = None, fontSize = 20)
pdf.save()

使用Adobe Reader打开该文件可看到对应的可编辑文本框。

给已有PDF添加不可编辑文本戳代码

from io import BytesIO 
import pikepdf
from reportlab.pdfgen import canvas
import os
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.lib.pagesizes import A4
from PyPDF2 import PdfFileReader, PdfFileWriter
from pypdf import PdfReader

text = "input.pdf"

def generate_stamp(msg, xy):
    x, y = xy
    buf = BytesIO()  # 临时存储生成的PDF内容
    c = canvas.Canvas(buf, bottomup=0)  # 创建画布,bottomup=0表示坐标从下往上递增(PDF标准)
    c.setFontSize(16)
    c.setFillColorCMYK(0, 0, 0, 0, alpha=0.7)
    # c.rect(194, 5, 117, 17, stroke=1, fill=1)
    c.setFillColorCMYK(0, 0, 0, 100, alpha=0.7)
    c.drawString(x, y, msg)
    c.save()
    buf.seek(0)
    return buf

stamp = generate_stamp('SOME TEXT STAMP', (300, 100))

# 给PDF第一页添加文本戳
pdf_orig = pikepdf.open(text)
pdf_text = pikepdf.open(stamp)
formx_text = pdf_orig.copy_foreign(pdf_text.pages[0].as_form_xobject())
formx_page = pdf_orig.pages[0]
formx_name = formx_page.add_resource(formx_text, pikepdf.Name.XObject) 
stamp_text = pdf_orig.make_stream(b'q 1 0 0 1 0 0 cm %s Do Q' % formx_name)
pdf_orig.pages[0].contents_add(stamp_text)
pdf_orig.save('./out.pdf')

需求

需要实现:将AcroForm可编辑文本框添加至已有input.pdf文件中,而非新建PDF文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:18:27