Python使用Reportlab处理PDF数据 - 段落

136 篇文章 16 订阅

简介

ReportLab有一个可流动的段落,您可以从reportlab.platypus.Paragraph导入。 在ReportLab包含的所有Flowable中,该段落是最灵活和有用的之一。 您将最有可能在其PLATYPUS框架的任何其他部分中使用它。 该段落可以格式化文本,并允许开发人员使用XML标签更改字体样式和内联颜色。 您也可以使用“段落”来证明您的文本合理,并将其设置为右,左或居中。 最后,您可以使用段落做下标或插入希腊字符。

这是创建Paragraph实例的方法:

p = Paragraph(text, style, bulletText=None)

text参数只是您要在PDF上绘制的字符串。 任何多余的空格将从文本末尾删除。 当您希望使用空格进行格式化时,这可能很烦人,但它确实使在段落中使用Python的三引号文本变得容易。 请注意,在传递字符串时,可以添加一些XML标记来格式化字符串的一部分。

bulletText参数用于为段落的默认项目符号提供文本。 我们将很快讨论更多关于项目符号的信息,但首先让我们看一下段落样式,因为您会更频繁地使用这些样式。

段落样式

Paragraph类的style参数必须是ParagraphStyle类的实例。 您可以这样导入:

from reportlab.lib.styles import ParagraphStyle

创建ParagraphStyle时,您会注意到,它基本上只是ReportLab称为StyleSheet的段落属性的Python字典。 实际上,您可以通过执行以下操作从ReportLab中获取示例样式表:

from reportlab.lib.styles import getSampleStyleSheet

这允许您做的是创建一个样式表实例,然后可以从中提取ParagraphStyles:

styles = getSampleStyleSheet()
normal_style = styles['Normal']

这只是从ReportLab的示例样式表中获取“普通”样式。 如果要列出所有样式,可以执行以下操作:

代码略

您可以在样式对象上调用list方法以获取所有这些样式的完整列表。 这只是普通样式的设置:

代码略

通过执行以下操作,可以随时从任何样式中获取任何这些设置:

代码略

快速更改样式的属性也很容易。 您需要做的就是:

代码略

请注意,这些更改仅在更改样式时生效,并且仅当您保留对该样式的引用时才生效。 因此,我通常建议仅从其中一种样式进行复制,如果您需要的只是简单的更改,请对其进行修改。

另一方面,如果您想创建自己的ParagraphStyle,则应查看源代码

代码略

有了这些,我们可以轻松地查看新段落样式的默认值。 让我们尝试在Python的解释器中创建自己的段落样式:

代码略

在这里,我们创建一个名为“ Test”的测试样式。 然后,我们检查其默认的Lead属性,结果为12。因此,为了好玩,我们将其设置为14。但是,如何子化ParagraphStyle? 让我们看看:

代码略

该类有点奇怪,但是它基于ParagraphStyle的超类,即PropertySet。 如果您深入研究源代码,会发现它使用Python的魔术来创建类的默认列表,然后调用self .__ dict __。update(self.defaults)来更新类的属性列表。 因此,我们将其复制到子类中。 但是要将前导属性设置为默认属性以外的其他内容,我们需要在更新字典后进行设置。

段落标记标签

ReportLab中的段落支持类似XML的标记标签。 您可以使用这些标记来修改段落样式或指定段落内的格式。

最外层标记

下表列出了ReportLab支持的所有最外面的标记标签:

“属性”列列出了我想作为正式标签名称的内容。 “同义词”列也将起作用,您还将注意到,在可能的情况下,ReportLab开发人员将尽可能使用与HTML标准相同的名称。

请注意,您必须将这些标记与<para>标记一起使用。 例如:

代码略

在这里,我们使用本文前面的一些代码创建一个非常简单的演示。 您应该注意的主线是第15行,实际上我们使用<para>标记将文本居中。 如果运行此代码,则最终应该得到一个PDF,该PDF的单行文本位于页面顶部的中心。

使文本居中的更好方法是创建自定义的ParagraphStyle。 这是一个例子:

代码略

在这里,我们仅将ParagraphStyle对象添加到示例StyleSheet中,并将其对齐方式设置为TA_CENTER。

使用段落内标记

详情参阅 - 亚图跨际

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用 ReportLab 库来生成 PDF 文件,下面是一个示例代码,可以生成一个包含图片和标题的 PDF 文件。首先需要安装 ReportLab 库,可以使用以下命令来安装: ``` pip install reportlab ``` 然后可以使用以下代码来生成 PDF 文件: ```python from reportlab.lib.pagesizes import letter from reportlab.pdfgen import canvas from reportlab.lib.units import inch from reportlab.lib import colors from reportlab.platypus import SimpleDocTemplate, Paragraph, Image from reportlab.lib.styles import getSampleStyleSheet # 创建一个 PDF 文档对象 pdf = SimpleDocTemplate("example.pdf", pagesize=letter) # 定义样式 styles = getSampleStyleSheet() title_style = styles["Title"] paragraph_style = styles["Normal"] # 创建一个包含图片和标题的列表 elements = [] # 添加标题 title = Paragraph("这是一个标题", title_style) elements.append(title) # 添加图片 im = Image("example.jpg", 6*inch, 4*inch) elements.append(im) # 将列表添加到 PDF 文档中 pdf.build(elements) ``` 在上面的代码中,我们首先创建了一个 `SimpleDocTemplate` 对象,指定了 PDF 文件名和页面大小。然后定义了标题和段落的样式。接着创建一个包含标题和图片的列表,最后将列表添加到 PDF 文档中并保存。在添加图片时,我们使用了 `Image` 类,并指定了图片的文件名和大小。 需要注意的是,上面的示例代码中的图片文件名为 `example.jpg`,需要将其替换为你自己的图片文件名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值