html文件嵌入到reportlab,Reportlab学习笔记

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() # 保存文件并关闭画布

结果如下图:

7d3d5746cb4570e4e4d1121c13af2288.png

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值