reportlab的编程包装。
pdfdocument的Python项目详细描述
这是ReportLab的包装,它允许轻松创建PDF文档:
from io import BytesIO from pdfdocument.document import PDFDocument def say_hello(): f = BytesIO() pdf = PDFDocument(f) pdf.init_report() pdf.h1('Hello World') pdf.p('Creating PDFs made easy.') pdf.generate() return f.getvalue()
信件和报告
pdfdocument附带两个不同的pdf模板,信件和报告。这个 唯一的区别是第一页的布局:这封信有一个附加的 位于顶部的地址框和较小的主内容区域。
用法如下:
pdf.init_report() # Or: pdf.init_letter()
该信函使用9点字体作为基本大小生成默认样式,报告 使用8点。这可以通过再次调用pdf.generate_style来更改。
也存在一种特殊类型的报告,即机密报告。 不同之处在于,在 第一页的顶部和背景中的水印。样式
对pdf.generate_style的调用生成一组预定义的样式。(是的 是的!)包括以下样式;此列表既不详尽 也没有承诺:
- pdf.style.normal
- pdf.style.heading1
- pdf.style.heading2
- pdf.style.heading3
- pdf.style.small
- pdf.style.bold
- pdf.style.right
- pdf.style.indented
- pdf.style.paragraph
- pdf.style.table
大多数情况下,您不会直接使用这些属性,除非在这种情况下 桌子的数量。几乎所有样式都有方便的方法,如 下一章。
内容
默认情况下,传递给以下方法的所有内容都将转义。报告实验室 支持类似HTML的标记语言,如果您想直接使用它,您将 必须只使用pdf.p_markup或通过创建 pdfdocument.document.MarkupParagraph手动实例。
标题
pdf.h1,pdf.h2,pdf.h3
段落
pdf.p,pdf.p_markup,pdf.small,pdf.smaller
无序列表
pdf.ul
迷你html
pdf.mini_html
各种元素
pdf.hr,pdf.hr_mini,pdf.spacer,pdf.pagebreak, pdf.start_keeptogether,pdf.end_keeptogether,pdf.next_frame,
表格
pdf.table,pdf.bottom_table
画布方法
canvas方法直接使用画布,而不是鸭嘴兽对象。 它们主要用于文具功能。你将主要使用 reportlab的canvas方法是直接的,并且只能使用以下方法 对于特殊情况。
pdf.confidential,pdf.draw_watermark,pdf.draw_svg
其他方法
pdf.append,pdf.restart
django集成
pdfdocument有一些在django视图中生成pdf的帮助程序,最明显的是 pdfdocument.utils.pdf_response:
from pdfdocument.utils import pdf_response def pdf_view(request): pdf, response = pdf_response('filename_without_extension') # ... more code pdf.generate() return response
svg支持使用dinu gherman的svglib。在PYPI上可以找到: <;http://pypi.python.org/pypi/svglib/>;