<p>我希望这就是你想要的:)</p>
<pre><code># PDF GENERATION LIBRARIES
# import the report lab PDF generation tools
from reportlab.lib.pagesizes import letter
from reportlab.lib.styles import ParagraphStyle
from reportlab.lib.units import inch
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, PageBreak
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
parts = []
msg = ''
progName = "PDF"
progVers = "1.0"
vehID = "vehID"
def sumFile(msgStr = None, COMPLETE = 0):
global parts, msg, progName, progVers, vehID
pdfmetrics.registerFont(TTFont('Inconsolata', 'Inconsolata-Regular.ttf'))
style = ParagraphStyle(
name='Normal',
fontName='Inconsolata',
fontSize=8,
)
msgStr = msgStr.replace(' ','&nbsp;')
msgStr = msgStr.replace('\n','<br />')
msgStr = msgStr.replace('\t','&nbsp;&nbsp;&nbsp;&nbsp;')
if msgStr == "PageBreak":
if msg != '':
parts.append(Paragraph(msg, style = style))
msg = ''
parts.append(PageBreak())
else:
msg += msgStr
if COMPLETE == 1:
if msg != '':
parts.append(Paragraph(msg, style = style))
msg = ''
genStr = "Generated using " + progName + " " + str(progVers)
parts.append(Paragraph(genStr, style = style))
summaryName = SimpleDocTemplate(vehID+".pdf")
summaryName.build(parts)
if __name__ == "__main__":
sumFile("%9s %s\n" % ("Bobby", "Sue"))
sumFile("{0:12}{1:7}{2:5}deg_C\tsmp {3}\n".format("20", "1000", "3.0", "535"))
sumFile("{0} {1}\n\n".format("09/06/2016", "11:51:39"))
# sumFile("{0} {1}\n\n".format("09/06/2016", "11:51:39"), COMPLETE=1)
</code></pre>
<p>有几点需要注意:<br/>
一。summaryName.build()的参数应该是一个列表。<br/>
2。Paragraph()的第一个参数是字符串,而不是列表。<br/>
三。简单地编写msgStr.replace('\n','<;br/>;')不会修改msgStr。因此您需要分配它。<br/>
您可以参考这些<a href="http://www.blog.pythonlibrary.org/2010/03/08/a-simple-step-by-step-reportlab-tutorial/" rel="noreferrer">Mouse vs Python</a>,<a href="https://www.reportlab.com/docs/reportlab-userguide.pdf" rel="noreferrer">Docs</a>来了解有关ReportLab的更多信息。</p>