小编Del*_*taG的帖子

安装:Reportlab:"ImportError:没有名为reportlab.lib的模块"

我安装了reportlab,via

pip install reportlab
Run Code Online (Sandbox Code Playgroud)

(也尝试通过

easy_install reportlab
Run Code Online (Sandbox Code Playgroud)

)

..但是我得到了上面的错误.之前还有其他RL导入 - 它是它所反对的.lib.我曾经让RL工作得很好,但是IT重新构建了我的计算机,我正在尝试重建它.脚本工作正常,但我认为RL安装有点时髦.

Reportlab:3.3.0

python installation pip reportlab

11
推荐指数
1
解决办法
2万
查看次数

是什么决定了Reportlab表中的垂直空间?

我在文档中定义了这种风格:

styles.add(ParagraphStyle(name='Table Header', font ='Helvetica-Bold',fontSize=16, alignment=TA_CENTER))
Run Code Online (Sandbox Code Playgroud)

我使用它来定义文本的段落以进入每个表的顶行(以便它们正确包装):

L2sub = [(Paragraph(L[0][0], styles['Table Header']))]
Run Code Online (Sandbox Code Playgroud)

后来,当我添加一个表时,还有一个定义样式的地方:

report.append(Table(data,style=[
                ('GRID',(0,0),(len(topiclist)-1,-1),0.5,colors.grey),
                ('FONT', (0,0),(len(topiclist)-1,0),'Helvetica-Bold',16),
                ('FONT', (0,1),(len(topiclist)-1,1),'Helvetica-Bold',12),
                ('ALIGN',(0,0),(-1,-1),'CENTER'),
                ('VALIGN',(0,0),(-1,-1),'MIDDLE'),
                ('SPAN',(0,0),(len(topiclist)-1,0)),
                ]))
Run Code Online (Sandbox Code Playgroud)

我的问题是:定义第一行单元格垂直高度的设置在哪里?我有一些问题,文本对于单元格来说太大和/或在单元格中设置得太低,但我无法确定导致它的原因或修复它的方法.我已经改变了两种尺寸,但我不能让细胞成为除了相同高度之外的任何东西.当我只是将文本放入单元格而不是段落时,表格def'n工作得很好,但段落引起了问题.

python reportlab

9
推荐指数
2
解决办法
7711
查看次数

Reportlab:页眉和页面数据

我使用页面功能和页面模板为文档中页面的一部分制作标题:

templates.append(PageTemplate(id='Overview', frames=frame, onPage=HeaderOverview))
Run Code Online (Sandbox Code Playgroud)

此模板的标头功能:

################################
# Function HeaderOverview - header for overview page
def HeaderOverview(canvas,doc):
    canvas.saveState()
    headboxh = 15
    headboxx = 20
    headboxy = 730
    headboxw = 570
    canvas.rect(headboxx, headboxy, headboxw, headboxh, fill=1)  
    canvas.setFillColor(colors.black)
    canvas.setFont("Helvetica", 14)
    canvas.setFillColor(colors.white)

    canvas.drawString(headboxx + 15,headboxy+.25*headboxh,"Mathematics")
    textWidth = stringWidth("Mathematics", "Helvetica", 12) 
    canvas.setFont("Helvetica", 12)
    canvas.drawString(headboxw - 15 - textWidth,headboxy+.25*headboxh,course)

    canvas.restoreState()
Run Code Online (Sandbox Code Playgroud)

这很有效,除了传递的课程变量(随本节中的每一页而变化)是序列中的最后一个变量,因为直到最终构建才真正调用此函数(我认为这就是它的工作方式)。我需要执行的操作是使该值成为页面上的值。如果我可以在编写页面本身时绘制它,那也可以。这是我的尝试:

####################################################################################
# Function makeGradeOverview(course): makes Overview chart for grade
#
def makeGradeOverview(canvas, course):
    report.append(NextPageTemplate("Overview"))
    report.append(PageBreak())

    headboxh = 50
    headboxx = 20
    headboxy = 600#730
    headboxw …
Run Code Online (Sandbox Code Playgroud)

python reportlab

5
推荐指数
1
解决办法
2229
查看次数

Python:将不均匀的行转换为列

我有一个包含不均匀元素的列表列表:

[['a','b','c'], ['d','e'], [], ['f','g','h','i']]
Run Code Online (Sandbox Code Playgroud)

我在Reportlab中显示一个表,我想将它们显示为列.据我了解,RL只采用我上面的行格式表(Platypus)的数据.

我可以使用循环来进行切换,但我觉得有一个列表理解会更快更Pythonic.我也需要在用完元素的列中留一个空格.

所需的产品将是:

[['a','d','','f'],['b','e','','g'],['c','','','h'],['','','','i']]
Run Code Online (Sandbox Code Playgroud)

编辑:示例应该是字符串,而不是数字

谢谢您的帮助!

python list-comprehension reportlab

4
推荐指数
1
解决办法
1112
查看次数

Reportlab:鸭嘴兽可以有内部链接吗?

我知道我可以在内部与画布链接,但我的整个文档都是用 Platypus 设置的。Platypus 是否支持内部链接?如果没有,迁移到画布有多难?

提前致谢!

python reportlab platypus

4
推荐指数
1
解决办法
2931
查看次数