reportlab的canvas对象的正确构造方法是什么?

时间:2018-07-17 07:01:40

标签: python reportlab

我从reportlab的《用户指南》中复制并粘贴了构造函数方法,但这似乎并不正确。

错误:

encrypt = None
      ^
SyntaxError: invalid syntax

构造方法:

def __init__(self,filename,
    pagesize=letter,
    bottomup = 1,
    pageCompression=0,
    encoding=rl_config.defaultEncoding,
    verbosity=0
    encrypt=None):

完整代码(固定逗号):

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter

class PDF_Hello:
    def hello(c):
        c.drawString(100, 100, "Hello World")

    def __init__(self, filename,
                 pagesize=letter,
                 bottomup=1,
                 pageCompression=0,
                 encoding=rl_config.defaultEncoding,
                 verbosity=0,
                 encrypt = None):
        c = canvas.Canvas("hello.pdf")

PDF_object = PDF_Hello("Hello_world.pdf")
PDF_object.hello(c)
c.showPage()
c.save()

更新(在reportlab用户指南中的印刷错误上添加逗号之后):

我在NameError: name 'rl_config' is not defined参数的默认值中遇到了encoding,默认情况下应该可以使用。

1 个答案:

答案 0 :(得分:1)

函数中的

所有参数必须用逗号(,)分隔。正如评论中已经提到的,在,方法中,缺少用于分隔参数的__init__()

您的__init__()方法应如下所示:

def __init__(self, filename, pagesize=letter, bottomup=1, pageCompression=0,
    encoding=rl_config.defaultEncoding, verbosity=0, encrypt=None):

如您所见:现在,verbosityencrypt之间有逗号。

来自Python docs的更多内容:

  

parameter_list :: = defparameter(“,” defparameter)* [“,”   [parameter_list_starargs]] | parameter_list_starargs

在这里,您需要使用“,” (逗号)来分隔参数。