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.h1pdf.h2pdf.h3

段落

pdf.ppdf.p_markuppdf.smallpdf.smaller

无序列表

pdf.ul

迷你html

pdf.mini_html

各种元素

pdf.hrpdf.hr_minipdf.spacerpdf.pagebreakpdf.start_keeptogetherpdf.end_keeptogetherpdf.next_frame

表格

pdf.tablepdf.bottom_table

画布方法

canvas方法直接使用画布,而不是鸭嘴兽对象。 它们主要用于文具功能。你将主要使用 reportlab的canvas方法是直接的,并且只能使用以下方法 对于特殊情况。

pdf.confidentialpdf.draw_watermarkpdf.draw_svg

其他方法

pdf.appendpdf.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/>;

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
(数组)列出Java中的实现   java检测JDBC连接中尚未提交的开放事务   java H2语句池   java正在使用cardlayout,有一个我无法解决的问题   java Android MTP客户端打开的是整个设备,而不是单个接口   java Querydsl mongodb gradle springboot问题   java XML使用外部xsd验证anytype类型的XML的一部分   java如何使用Hibernate在实体中创建属性表?   intellij理念“BufferedReader”与“java.io.BufferedReader”之比较。这有关系吗?   java解释多线程的输出   Eclipse中的java Android应用程序:编辑未显示在图形布局上的文本   java如何在struts 1中使用显示标记?