生成PDF时,ReportLab可以使用几个特殊功能。 如:

  • 文件注释
  • 书签
  • 页面过渡
  • 加密
  • 交互式表格

文件注释

您也可以使用ReportLab将元数据添加到PDF中。 这可以通过调用以下不言自明的canvas方法来完成:

  • setAuthor()
  • setTitle()
  • setSubject()

您也可以使用ReportLab将元数据添加到PDF中。 这可以通过调用以下不言自明的canvas方法来完成:

  • setAuthor()
  • setTitle()
  • setSubject()

文件注释不可见。 您只能通过打开“文档属性”对话框来查看它们,该对话框可在Adobe Reader中的“文件”->“属性”菜单项中找到。 这是向存档软件或其他可能需要使用PDF的软件提供有关文档的简单标准信息的好方法。

让我们看一个简单的演示:

代码略

所有这些都设置了PDF的作者,标题和主题。 如果在Adobe Reader中打开PDF并转到“文件”->“属性”,则应看到类似以下内容:

书签

ReportLab支持将书签添加到PDF。 书签是一个内部超链接,您可以单击该超链接来浏览文档。 ReportLab仅支持从文档的一部分跳到另一部分的功能。 跳转后,您还可以在文档阅读器中控制缩放级别。 要将书签添加到文档中,您将需要使用bookmarkPage画布方法。 为了使书签可见可见,您还需要调用addOutlineEntry方法。

bookmarkPage画布方法标记如下所示:

canvas.bookmarkPage(name,fit='Fit',left=None,top=None,bottom=None,right=None,zoom)

bookmarkPage画布方法的默认设置是将页面本身定义为跳转目标。 默认情况下,它将缩放整个页面以适合屏幕。

让我们看一个创建书签的简单示例:

代码略

在这里,我们创建画布对象并绘制一个字符串。 然后,我们添加一个书签并调用showPage方法。 这将有效地创建一个分页符,以便对画布进行的任何其他图形调用都将在下一页上进行。 因此,我们在第2页上绘制了一个新字符串并添加了另一个书签。 最后,我们通过上述的addOutlineEntry方法将书签添加到PDF的轮廓中。 addOutlineEntry方法标记如下:

canvas.addOutlineEntry(self, title, key, level=0, closed=None)

在我们的示例中,我们仅传递标题和key。 key必须与我们之前在文档中添加的书签的名称匹配。 运行此代码时,您将在PDF的导航侧栏中看到类似以下内容的内容:

大纲树

ReportLab将导航侧栏称为大纲树。 当您要将大纲条目添加到大纲树时,需要使用前面提到的addOutlineEntry方法。 许多用户喜欢使用侧边栏浏览文档,因此了解如何向该侧边栏添加条目可能很有价值。

正如我们刚学到的,可以将四个参数传递给addOutlineEntry方法:title,key,level和close。 title参数是将出现在导航窗格中的标题。 key是您在创建书签时使用的文档中的唯一字符串。 level参数默认为零,这是最高级别。 您一次只能下降一个级别。 如果您尝试下降多个级别,则会引发错误。 最后,closed参数告诉导航窗格是应该关闭还是打开书签。

页面过渡

ReportLab支持页面过渡的概念,这是一种有限形式的过渡,您可以在幻灯片之间切换时将其添加到Microsoft Powerpoint。 在这种情况下,仅当您将过渡设置为全屏模式时,才能在Adobe Reader中激活过渡。 这是您可以应用的过渡列表:

PageTransitionEffects = {'Split': [direction_arg, motion_arg],'Blinds': [dimension_arg],'Box': [motion_arg],'Wipe' : [direction_arg],'Dissolve' : [],'Glitter':[direction_arg]}

如您所见,您有六个可供选择。 如上所示,您可以应用方向自变量或运动自变量或两者都应用。 这是ReportLab文档的清单,显示了这些参数的有效值:

direction_arg = [0,90,180,270]
dimension_arg = ['H', 'V']

如果要向PDF添加过渡效果,则需要调用setPageTransition canvas方法,如下所示:

canvas.setPageTransition(self, effectname=None, duration=1,direction=0, dimension='H', motion='I')

让我们创建一个简单的示例:

代码略

详情参阅 - 亚图跨际

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数据攻略-Pandas的数据创建与基础特性

    大家好,我是Mr数据杨!今天将进入Python的Pandas数据世界,就像三国演义中的英雄们,用聪明才智塑造自己的命运. 记得三国中,周瑜曾利用兵法巧妙策划火烧赤壁,击败曹军.这就像创建一个Panda ...

  8. aws python库_如何使用Python,AWS和IEX Cloud创建自动更新股市数据的Excel电子表格

    aws python库 Many Python developers in the financial world are tasked with creating Excel documents f ...

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

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

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

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

最新文章

  1. 基于GAN的图像水印去除器,效果堪比PS高手
  2. 【技术贴】安装sql server 2005后不能连接服务器,没有studio express以及安
  3. Difference: throw or throw ex?
  4. NET问答: 如何将 ASP.NET Core WebAPI 中抛出的异常封装成对象?
  5. 使用贝赛尔路径(UIBezierPath)创建画板
  6. Repository 返回 IQueryable?还是 IEnumerable?
  7. java中methods方法_java中Class.getMethod方法
  8. python股票接口_Python 从 sina 股票数据接口读取数据,并保存到 MySQL 数据库
  9. Lua: 给 Redis 用户的入门指导
  10. 1年经验却拿总监薪资?看到他做的数据可视化报表,我彻底服了
  11. centos下不重装php——给PHP添加新扩展库
  12. C#:把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前
  13. 智慧农业:农业物联网实施方案
  14. 基于 VisualStudio2019 的 ASP.NET 后台环境搭建
  15. 使用浏览器合成语音播放
  16. python拦截广告弹窗_通过python实现弹窗广告拦截过程详解
  17. Zemax学习笔记(11) - 变焦镜头设计实例
  18. EditText输入完成后自动关闭输入法
  19. ariang/Aria2 RPC 服务器错误/Aria2状态/未连接
  20. swing hacks_这些firefox hacks和扩展程序增强了您的隐私

热门文章

  1. MT4 API 跟单交易接口更新
  2. 几个通用有限元软件简介
  3. winform遍历bartender_C# 调用Bartender打印的2种方式
  4. IDM下载器最新版本6.32.7
  5. Learun FrameWork V7.0,敏捷开发向导快速配置
  6. 在线预览word接口
  7. linux系统查看网卡是否开启,查看Linux下网卡状态或 是否连接
  8. 嵩天《Python网络爬虫与信息提取》实例1:Requests库网络爬虫实战5个实例
  9. android脚本录制非root,Android 自动精灵 V2.13.1 支持脚本录制免ROOT
  10. java二路归并排序算法_二路归并排序的java实现