我试图设置一个段落样式来报告实验室,我在这里定义了一个样式:
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'未定义'
有任何线索吗?
答案 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。这些完全符合您的期望。
我之所以发布答案,是因为我在任何地方都找不到精确的答案,希望它可以对其他人有所帮助。