生成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')
让我们创建一个简单的示例:
代码略
详情参阅 - 亚图跨际