简述
reportlab.graphics子程序包是作为一组独立程序开始的。 今天,它已完全集成到ReportLab工具包的其余部分中。 图形子软件包为开发人员提供了一组强大的功能,可用于创建图表和图形,从而增强您的PDF和以编程方式生成的报告。
什么是绘制?
ReportLab对图形的定义是与平台无关的一组形状描述。 这意味着图形实际上并未与文件格式(例如PDF或PostScript)相关联。 从好的方面来说,大多数创建矢量图形的系统都遵循Postscript使用的模型,因此实际上很容易描述图形。 定义图形很重要的原因是,我们需要一种以明确的方式描述程序中形状的方法。
所有工程图都包含形状。 您在小学时学到的图形(即矩形,直线,圆形)可以用来创建大多数其他图形。 在计算机程序中还会看到另一种形状,称为“组”,它是可以通过转换操作的其他形状的容器。 如果您曾经使用过Microsoft Publisher或Adobe Photoshop,则可能会看到可以对图像进行分组,然后将它们作为一个整体进行处理(即调整组的大小,翻转或旋转它们等)。 这就是我提到转换一词时的意思。
ReportLab的渲染器
ReportLab有多个渲染器,可用于绘制图形。 换句话说,ReportLab可以获取您的图形并以不同的格式输出它们。 如您所料,ReportLab可以使用renderPDF渲染器以PDF输出图形。 您还可以通过renderPS输出Postscript,并通过renderPM输出位图。 通过Raph Levien的libart光栅化程序和Fredrik Lundh的Python Imaging Library(PIL)可以实现位图渲染。 但是请注意,您无法在Python 3中安装PIL。相反,ReportLab为此使用了Alex Clark的PIL分支Pillow。 实际上,您可以将Pillow用于Python 2.7,并将其作为Python Imaging Library的“友好分支”,这意味着其API与PIL的API相同。 还有一个实验性的SVG渲染器,它使用Python自己的内置XML模块。 这一切意味着,如果您安装了所有这些扩展,则应该能够以几种不同的格式生成相同的图形。
ReportLab中的工程图也是可流动的,因此您可以像其他任何可流动的一样将它们添加到Platypus文档中。 如果需要,您也可以直接在ReportLab Canvas对象中绘制图形。 另一个简洁的功能是,您可以使用实用程序功能快速生成图纸的一页PDF!
顺便说一句,我提到的SVG渲染器尚未应用任何优化,它只能使用ReportLab Graphics提供的绘图功能。 这意味着ReportLab中的SVG格式不完整。 您将无法制作SVG动画,脚本,剪辑,蒙版或渐变形状。
坐标系
“图形”子程序包使用ReportLab默认使用的相同坐标系,即Y方向从下至上。 一些图形模型(即SVG)使用相反的坐标系,其中Y坐标指向下方。 ReportLab提供的SVG渲染器将根据需要翻转事物以使其看起来正确。
X坐标仍然像从ReportLab的其余部分一样从左到右。
简单绘制
在获得所有这些信息之后,您可能会开始怀疑我们是否能够真正学习如何在ReportLab中进行绘制。 您会很高兴知道那个时刻已经到了。 让我们使用ReportLab的“图形”子包创建一个简单的图形!
代码略
这将在您的PDF中输出以下内容:
详情参阅 - 亚图跨际