Python使用Reportlab处理PDF数据 - 其他可流动(flowable)

136 篇文章 16 订阅

简述

ReportLab还可以使用其他几个Flowable。 在本本中,我们将研究以下Flowable:

  • Preformatted
  • XPreformatted
  • Image
  • Spacer
  • PageBreak
  • CondPageBreak
  • KeepTogether
  • TableOfContents
  • SimpleIndex
  • ListFlowable

Preformatted

ReportLab有一些相互关联的Flowable,分别称为Preformatted和XPreformatted。 Preformatted Flowable被描述为类似于HTML <PRE>标签。 根据ReportLab的docstring:

它尝试完全按照您以固定宽度的“打字机”字体键入的文本显示文本。 默认情况下,换行符恰好是放置它们的位置,并且不会被换行。 您可以选择定义最大行长,然后代码将被包装; 以及在每个换行行的开头插入额外的字符(例如‘>’)。

该类的实例化如下所示:

Preformatted(text, style, bulletText=None,
    dedent=0, maxLineLength=None, splitChars=None,
    newLineChars=None)

这与Paragraph的实例化非常相似,尽管它是Flowable而不是Paragraph的预格式化子类。 如您所见,“预格式化”需要文本和段落样式,才能创建此Flowable的实例。 您还可以通过bulletText参数将其转换为项目符号。 下限默认为无。 如果碰巧设置了下垂,那么将删除所有公共的前导空格。 例如,如果要将dedent设置为5,则它将dedent或从字符串中删除5个字符。

maxLineLength参数用于定义Flowable中允许的最大行长。 如果您的文本恰好超过您定义的长度,则该行将自动分割。 如果您没有设置最大线长,而您的线对于页面来说太长,那么您的线将一直绘制到到达页面边缘,然后基本上被截断。 因此,如果您认为文本行很长,则应该设置最大行长。

splitChars参数告诉ReportLab要分割的字符。 默认情况下,它将在以下任意位置分割:空格,冒号,句号,分号,逗号,连字符,正斜杠,反斜杠,左括号,左方括号和左花括号。 当然,您可以通过显式设置来使用非标准字符。

如果您希望在创建新行时插入新字符,则可以设置newLineChars以插入这些字符。

让我们看一个使用预格式化的Flowable的简单示例:

代码略

此示例中包含一个常规段落和一个预格式化的Flowable。 两者的文本字符串中都有一些XML标记。 运行此命令时,将看到以下内容:

如您所见,Preformatted Flowable不使用Paragraph的XML标签,因此它们是完全可见的,并且对文本没有影响。

XPreformatted

XPreformatted Flowable实际上是段落Flowable的子类。 根据文档,这是“段落类的非重排形式”。 实际上,它将以与常规段落相同的方式与XML标签一起使用。 要创建XP格式化的Flowable,只需执行以下操作:

XPreformatted(text, style, bulletText=None,
    dedent=0, frags=None)

此处的参数以与使用段落或预格式化的Flowable时相同的方式工作。

代码略

Flowable的工作原理与预格式化的基本相同。 坦白说,我个人最常使用Flowable段落,除非您需要其中之一,否则我强烈建议您坚持使用它。

Image

这是在ReportLab中创建图像所需要的:

Image(filename, width=None, height=None)

如您所见,Image类接受3个参数:图像的文件名,宽度和高度。 filename参数是必需的,并且可以是文件路径,类似文件的对象或reportlab.graphics.shapes.Drawing的实例。 默认情况下,ReportLab仅支持jpeg格式。 但是,如果您安装了Pillow(或PIL)软件包,则还支持大多数其他图像类型。 width和height参数以点为单位指定图像的尺寸。 如果您未指定参数之一,则ReportLab只会假设图像的另一个尺寸也以磅为单位,并按原样使用它。 这意味着,如果仅指定尺寸之一,则将不会保持图像的纵横比,并且会拉伸图像。

让我们看一下Image Flowable的简单演示:

代码略

详情参阅 - 亚图跨际

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值