gpt4 book ai didi

ReportLab - 重叠词

转载 作者:行者123 更新时间:2023-12-01 12:44:15 41 4
gpt4 key购买 nike

你好,

我正在使用报告实验室生成 pdf。我想绘制一个文本,它是一个 Paragraph,代表一个标题,因此,如果标题比段落的可用长度长,它将在下一行拆分,如果标题太长适合段落的可用宽度和高度,然后调整文本大小。

使用较小的 10 字体可以正常工作,但是,如果我选择字体较大的样式,例如:

title_style = ParagraphStyle("title", fontName='Helvetica', fontSize=50, alignment=TA_CENTER, backColor=None)

文本绘制如下图所示,单词重叠: sample image

这是我的代码:

def draw_on(canvas, x, y, paragraph, style, text, available_width, available_height, min_font_size=8):
w, h = paragraph.wrap(available_width, available_height)
temp_font_size = paragraph.style.fontSize

while temp_font_size > min_font_size:

if w <= available_width and h <= available_height:
paragraph.drawOn(canvas, x, y)
break
else:

temp_font_size -= 1
style.fontSize = temp_font_size
paragraph = Paragraph(text, style)
w, h = paragraph.wrap(available_width, available_height)



def generate_pdf():

c = canvas.Canvas("FirstPage.pdf")

title_style = ParagraphStyle("title", fontName='Helvetica', fontSize=10, alignment=TA_CENTER, backColor=None)

title_text = 'If title has a small font, everything s ok.'
title_paragraph = Paragraph(title_text, title_style)
title_paragraph_available_width = 2*inch
title_paragraph_available_height = 1*inch
title_min_font_size = 8

draw_on(c, 2*inch, 5*inch, title_paragraph, title_style, title_text, title_paragraph_available_width,
title_paragraph_available_height, title_min_font_size)


c.showPage()
c.save()

有人知道为什么会发生这种情况以及如何解决吗?

最佳答案

这在用户指南的第 67 页上有描述:

The fontSize and fontName tags are obvious, but it is important to set the leading. This is the spacing between adjacent lines of text; a good rule of thumb is to make this 20% larger than the point size.

因此在您的情况下,您需要将 leading = 50 * 1.2 添加到您的 ParagraphStyle

此外,作为旁注,我建议您要么充分利用 reportlabs Platypus(Paragraph 等)的全部潜力,要么坚持使用 reportlabs pdfgen,后者更基础且更实用易于编码。 Platypus 适用于较长的文本和相对定位(想想 latex ),而 pdfgen 更适用于绝对定位(单词)。但这只是我的意见......

关于ReportLab - 重叠词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21753218/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com