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为扫描器的输入生成字符序列   hibernate中的java实体合并   如何使变量在Java文件中成为全局变量   java JVM崩溃“异常访问冲突”   向MediaMetadataRetriever中的setDataSource()发送Uri时发生java IllegalArgumentException   java没有节约协议?   用户界面java gui帮助actionlistener   java索引越界异常,即使大小小于索引?   在C++中使用java的困惑   在普通java编码中插入图像   JDBC上的java缓存数据   在Java中,在字符串的特定位置替换子字符串   java在运行elasticsearch集群时遇到Perm Gen空间问题   java Soap故障跟踪   java拆分器。固定长度(int)。拆分(字符串)   java获取jar内部包的路径