简介

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。

使用段落内标记

详情参阅 - 亚图跨际

Python使用Reportlab处理PDF数据 - 段落相关推荐

  1. Python使用Reportlab处理PDF数据 - 图形和图表

    简述 reportlab.graphics子程序包是作为一组独立程序开始的. 今天,它已完全集成到ReportLab工具包的其余部分中. 图形子软件包为开发人员提供了一组强大的功能,可用于创建图表和图 ...

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

    简述 ReportLab还可以使用其他几个Flowable. 在本本中,我们将研究以下Flowable: Preformatted XPreformatted Image Spacer PageBre ...

  3. Python使用Reportlab处理PDF数据 - 自定义页眉和页脚

    有许多文档和报告要求您在首页或每页上都有页眉. 例如,如果您要为律师或法官生成报告,那么几乎可以肯定,所有页面上都需要合伙人信息. 在大多数医疗机构或医院中生成报告时也是如此. 他们的固定器必须以某种 ...

  4. 【Python办公自动化】使用reportlab制作pdf报告

    原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接.作者信息和本声明. Python使用folium制作地图并生成png图片 第一章 folium的方法和类的介绍(思维导图) 第二章 ...

  5. python使用fpdf生成pdf文件章节(chapter),包含:页眉、页脚、章节主题、数据排版等;

    python使用fpdf生成pdf文件章节(chapter),包含:页眉.页脚.章节主题.数据排版等: #仿真数据 The year 1866 was marked by a bizarre deve ...

  6. python库Camelot从pdf抽取表格数据以及python库camelot安装及使用中的一些注意事项

    一.python库camelot安装及使用中的一些注意事项 1)camelot方法有两种解析模式:流解析(stream).格子解析(lattice),其中格子解析能够保留表格完整的样式,对于复杂表格来 ...

  7. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  8. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  9. python处理word或者pdf文件_利用python程序生成word和PDF文档的方法

    一.程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用fr ...

  10. Python自动化办公【PDF文件自动化】

    PDF 文件可以分为可编辑型PDF 文件与扫描型PDF 文件,内容可以复制,是可编辑型PDF文件,反之则是扫描型PDF 文件.简单理解扫描型PDF文件是由一张张图像构建而成. 读取PDF文件内容 1. ...

最新文章

  1. jupyter notebook中的魔法函数
  2. oracle 触发器 upsert,数据库管理员
  3. 《Redis 设计与实现》读书笔记-Redis 对象
  4. P3384 【模板】树链剖分
  5. hpe服务器稳定性,hpe服务器安装与配置
  6. 由C过渡到C++-入门知识点
  7. 按照演算,整个宇宙将会陷入无边的黑暗
  8. php mysql 操作函数_PHP操作mysql函数详解,mysql和php交互函数
  9. 宝塔 运程mysql_宝塔面板使用详解(极简搭建各种环境、mysql数据库等)
  10. fields and vector spaces
  11. 跟我一起考PMP---项目整合管理
  12. CTFHUB WEB
  13. android 闪屏图片,Android的闪屏图像尺寸,以适应所有设备Android的闪屏图像尺寸,以适应所有设备(Andro...
  14. java.io.FileNotFoundException: File does not exist: hdfs ://sxt/home/sqoop-1.4.6/lib/commons-codec-1
  15. android studio虚拟机无法启动 The system requirements are not satisfied、vmx enabled no、vmx supported no
  16. 热爱生活的人请过来看看:有没有通过叶子或花来识别植物的软件?
  17. 雨伞16骨好还是24骨好_雨伞骨数多好还是少好
  18. Apache Tomcat服务器安装配置和部署运行
  19. EPICS记录参数--Event记录(event)
  20. 老师,强奸你时别叫痛(转载)

热门文章

  1. Android Studio- 把SVN项目下载到 本地的 操作方法
  2. 开放有限元分析计算平台介绍
  3. layui图片放大功能
  4. 实现在线预览word文档
  5. mac Python安装pybloomfilter 出现找不到libcrypto的问题
  6. 人工智能革命:人类将永生或者灭绝
  7. 如何使你的电脑和别人的不同 ---------致美化网站主题工具介绍
  8. 在ubuntu系统中安装sublime
  9. 解决docker下载安装速度慢的问题
  10. 残差自回归模型的R实现