添加段落样式reportlab

时间:2016-07-24 21:43:08

标签: python pdf

我试图设置一个段落样式来报告实验室,我在这里定义了一个样式:

def stylesheet():
    styles= {
        'default': ParagraphStyle(
            'default',
            fontName='Arial',
            fontSize=16,
            leading=12,
            leftIndent=0,
            rightIndent=0,
            firstLineIndent=0,
            alignment=TA_LEFT,
            spaceBefore=0,
            spaceAfter=0,
            bulletFontName='Arial',
            bulletFontSize=10,
            bulletIndent=0,
            textColor= black,
            backColor=None,
            wordWrap=None,
            borderWidth= 0,
            borderPadding= 0,
            borderColor= None,
            borderRadius= None,
            allowWidows= 1,
            allowOrphans= 0,
            textTransform=None,  # 'uppercase' | 'lowercase' | None
            endDots=None,         
            splitLongWords=1,
        ),
    }

然后我就像那样打印

   pdf = PDFDocument(carte)
    pdf.init_report()
    pdf.p(str(row))
    pdf.generate()

提供无格式输出

当我尝试

pdf = PDFDocument(carte)
pdf.init_report()
pdf.p(str(row), default)
pdf.generate()

要将默认样式应用于我的文字,它会给我“NameError:name' styles'未定义'

有任何线索吗?

2 个答案:

答案 0 :(得分:0)

尝试使用reportlab,添加到现有代码中:

from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.enums import TA_LEFT
from reportlab.lib.colors import black

styles['small'] = ParagraphStyle(
   'small',
    parent=styles['default'],
    fontSize=8,
    leading=8,
)

paragraphs.append(Paragraph('Text with default style<br/>', styles['default']))
paragraphs.append(Paragraph('Text with small style', styles['small']))

答案 1 :(得分:0)

我已经为此苦苦挣扎了几个小时,直到今天提供的解决方案对我来说都行不通。我在programcreek上发现了另一个几乎可以实现的功能。稍加修饰后,这个技巧就完成了:

val selectedMedias = ArrayList<T>(/*init value*/)

selectedMedias.apply {
   val newValues = this.filter { !File(it.path).exists() }
   clear()
   addAll(newValues)
}

要使用它,只需像这样调用 yourStyle

#First you need to instantiate 'getSampleStyleSheet()'
from reportlab.lib.styles import (ParagraphStyle, getSampleStyleSheet)
style = getSampleStyleSheet()
yourStyle = ParagraphStyle('yourtitle',
                           fontName="Helvetica-Bold",
                           fontSize=16,
                           parent=styles['Heading2'],
                           alignment=1,
                           spaceAfter=14)

对齐方式必须按照文档中的数字指定:

  

有四个可能的对齐值,在reportlab.lib.enums模块中定义为常量。它们是TA_LEFT,TA_CENTER或TA_CENTRE,TA_RIGHT和TA_JUSTIFY,其值分别为0、1、2和4。这些完全符合您的期望。

我之所以发布答案,是因为我在任何地方都找不到精确的答案,希望它可以对其他人有所帮助。