Python制作PDF的一个库,效率非常高,比pypdf不知道快了多少。
我是完全照着官方文档的顺序来记录笔记,只是部分内容的顺序有调整,方便后续查看。
文档下载地址:https://www.reportlab.com/docs/reportlab-userguide.pdf
Chapter 1 环境篇
编程语言:Python3.8
1.1 安装
pip install reportlab
如果有缺失的依赖包(比如之前没有安装pillow),pip会自动进行安装
Chapter 2 Graphics and Text with pdfgen - 有pdfgen的图形和文本
2.1 Basic Concepts - 基本概念
from reportlab.pdfgen import canvas
def hello(c):
c.drawString(0, 0, "Hello World")
c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage() # 保存当前画布页面
c.save() # 保存文件并关闭画布
结果如下图:
pdfgen软件包是用于生成PDF文档的最低级别的接口,其本质相当于在一个画布上进行绘画的工具。
画布应被视为一张白纸,并且在纸上使用笛卡尔坐标确定点(X,Y)坐标,默认情况下在页面的左下角具有(0,0)起点。
此外默认情况下,第一个坐标x朝右,第二个坐标y朝上。
2.2 More about the Canvas - 关于画布
一张画布有很多属性可以进行配置。
首先这个是画布对象的初始属性:
def __init__(
self, filename, pagesize=(595.27, 841.89), bottomup=1,
pageCompression=0, encoding=rl_config.defaultEncoding,
verbosity=0, encrypt=None
):
filename - 控制最终PDF文件的名称。
也可以传入任何打开的二进制流(例如sys.stdout,带有二进制编码的python处理标准输出),然后将PDF文档写入其中。
注意:不能在HTML页面中间内联传递PDF文档!
pagesize
以点(1/72英寸)为单位的两个数字的元组。画布默认为A4(国际标准页面大小与美国标准字母大小不同),但最好明确指定它。在reportlab.lib.pagesizes中可以找到最常见的页面大小,因此可以使用如下表达式:
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, A4
myCanvas = canvas.Canvas('myfile.pdf', pagesize=A4)
如果打印文档时遇到问题,请确保使用正确的页面尺寸(通常为A4或Letter)。某些打印机无法处理太大或太小的页面。
可以使用width变量将右边距定义为width-inch,而不是使用常量。通过使用变量,即使页面大小发生变化,页边距仍然有意义。
bottomup
已被弃用,将来可能会被删除
pageCompression - 是否压缩每个页面
默认情况下,不压缩页面流,因为压缩会减慢文件生成过程。
如果输出大小很重要,请设置pageCompression=1。但是请记住,压缩后的文档会变小,但生成起来会更慢。请注意,图像始终是压缩的,并且只有在每页上都有大量文本和矢量图形时,此选项才会节省空间。
encoding
在2.0版中已过时,99%的用户可能会忽略它。所有TTF和常用的CID字体,此处传递的编码将被忽略,因为在这些情况下reportlab库本身知道正确的编码。
encrypt
默认情况下,文档未加密。如果encrypt是字符串对象,则将其用作pdf的用户密码。如果encrypt是reportlab.lib.pdfencrypt.StandardEncryption的实例,则此对象用于加密pdf。
2.3 Drawing Operations - 绘图操作
原文:https://www.cnblogs.com/quanquan616/p/11871591.html