ReportLab的编程包装器。
项目描述
这是一个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
大多数情况下,您不会直接使用这些属性,除非是表格。几乎所有的样式都有便利方法,如下一章所述。
内容
所有传递给以下方法的全部内容默认都会被转义。ReportLab支持类似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
画布方法
画布方法直接与画布交互,而不是与Platypus对象交互。它们主要用于信封函数中。您通常直接使用ReportLab的画布方法,只有在特殊情况下才会使用以下方法。
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/>
项目详情
下载文件
下载适用于您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。