Python 如何使Reportlab PDF交互?

Python 如何使Reportlab PDF交互?,python,pdf,button,reportlab,Python,Pdf,Button,Reportlab,我已经为这个问题挣扎了一段时间了。文档很差,而且似乎没有任何示例 这里的代码工作得非常好 path = "C:/Users/YourName/Desktop/" from reportlab.pdfgen.canvas import Canvas as can def greet(c): c.drawString(220, 700, "Reporting") c = can(path + "first.pdf") greet(c) c.showPage() c.save() 我想生成

我已经为这个问题挣扎了一段时间了。文档很差,而且似乎没有任何示例

这里的代码工作得非常好

path = "C:/Users/YourName/Desktop/"
from reportlab.pdfgen.canvas import Canvas as can

def greet(c):
    c.drawString(220, 700, "Reporting")
c = can(path + "first.pdf")
greet(c)
c.showPage()
c.save()
我想生成一个PDF,它有一个可以勾选的交互式复选框,或者一个单选按钮,等等。 我尝试了以下代码,但始终得到
AttributeError

from reportlab.pdfgen.canvas import Canvas as can

def welcome(c):
      import reportlab as rep


      rep.pdfbase.acroform.AcroForm.checkbox(rep.pdfbase.acroform.AcroForm, 
                                             name='CB0',tooltip='Field CB0',
                                             checked=True,
                                              x=72,y=72+4*36,
                                              buttonStyle='diamond',
                                              borderStyle='bevelled',
                                              borderWidth=2,
                                              borderColor="red",
                                              fillColor="green",
                                              textColor="blue",
                                              forceBorder=False)
c3 = can(path + "story.pdf")
welcome(c3)
c3.showPage()
c3.save()
我一直得到一个
AttributeError:property对象没有属性\u doc

如果我从
复选框
方法中删除
rep.pdfbase.acroform.acroform
,我将得到一个错误,表示缺少1个位置参数required。它用于“self”参数


非常感谢您的帮助。

在ReportLab
acroForm
中,acroForm是一个
canvas
实例的属性(文档或代码中的大小写错误)。因此,您需要像这样调用关联的方法:

c=canvas.canvas(“example.pdf”)
c、 acroForm.checkbox()
您可能会遇到一些与PDF阅读器的兼容性问题。它与AdobeAcrobatReader配合得很好,但在其他一些阅读器中无法正常工作,或者呈现不正确

以下是您给出的示例的完整工作版本:

从reportlab.pdfgen导入画布
从reportlab.lib.colors导入蓝色、绿色和白色
欢迎(c):
c、 acroForm.checkbox(
选中=正确,
buttonStyle='check',
shape='square',
fillColor=白色,
边框颜色=绿色,
text颜色=蓝色,
borderWidth=1,
borderStyle='solid',
尺寸=20,
x=100,
y=100,
tooltip=“示例工具提示”,
name=“example\u复选框”,
annotationFlags='print',
fieldFlags='required',
forceBorder=True,
相对=假,
dashLen=3)
c3=canvas.canvas(“story.pdf”)
欢迎(c3)
c3.showPage()
c3.save()

太棒了!谢谢你,亚当。我很困惑,所以花了很长时间看源代码。应该意识到这很简单。文档令人困惑,在第74页,它简要地提到了复选框。