首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReportLab -重叠词

ReportLab -重叠词
EN

Stack Overflow用户
提问于 2014-02-13 11:42:08
回答 1查看 1.2K关注 0票数 3

喂,

我正在使用报告实验室生成pdf。我想要画一个文本,它是一个Paragraph,代表一个标题,所以,如果标题比段落的可用长度长,那么它将在下一行拆分,如果标题长到适合段落的可用宽度和高度,那么文本将被调整大小。

它工作正常,字体为10,但是,如果我选择一个字体更大的样式,比如:

代码语言:javascript
复制
title_style = ParagraphStyle("title", fontName='Helvetica', fontSize=50, alignment=TA_CENTER, backColor=None)

比下面的图片所画的文字更多的文字是重叠的:

这是我的代码:

代码语言:javascript
复制
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()

任何人都有一个ideea,为什么会发生这种情况,以及如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-24 12:44:37

用户指南第67页对此作了说明:

fontSize和fontName标记是显而易见的,但是设置前导是很重要的。这是相邻的文本行之间的间距;一个好的经验法则是使这20%比点的大小大。

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

另外,作为附带说明,我建议你要么充分利用reportlabs (Paragraph's等)的潜力,要么坚持使用reportlabs,它更基本,更易于编码。鸭嘴兽更适合更长的文本和相对位置(比如乳胶),pdfgen更适合绝对定位(word)。但这只是我的观点。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21753218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档