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

html文件嵌入到reportlab,Reportlab学习笔记相关推荐

  1. algorithm头文件下的常用函数-学习笔记

    algorithm头文件下的常用函数-学习笔记 max(x,y),min(x,y),abs(x) swap(x,y) reverse(it,it2) next_permutation() fill( ...

  2. linux rcs文件中的ip,linux学习笔记之diff和patch命令

    关键字:Linux 学习笔记 运维 系统 命令 一.命令的功能 diff命令的功能为逐行比较两个文本文件,列出其不同之处.可是做成diff记录也就是补丁. patch就是利用diff制作的补丁来打到文 ...

  3. linux解挂文件磁盘的命令,Linux学习笔记(4)磁盘分区(fdisk)、挂载与文件系统命令...

    Linux学习笔记(4)磁盘分区(fdisk).挂载与文件系统命令 1.磁盘分区是怎么表示的? 1.1 对于IDE接口,第一主盘为hda,第1从盘为hdb,第1从盘的第1个分区为hdb1 1.2 对于 ...

  4. .NET Core开发实战(第24课:文件提供程序:让你可以将文件放在任何地方)--学习笔记...

    24 | 文件提供程序:让你可以将文件放在任何地方 文件提供程序核心类型: 1.IFileProvider 2.IFileInfo 3.IDirectoryContents IFileProvider ...

  5. kettle将文件路径定义为_kettle学习笔记(三)——kettle资源库、运行方式与日志...

    一.kettle资源库 资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中. 资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形式分组管理的,用户可以自定义文件 ...

  6. 如何用matlaab把csv转为mat文件_数学建模竞赛学习笔记:用TOPSIS模型进行综合评价

    笔记整理来自清风老师的数学建模课程(可以在B站里搜索到,头条无法放站外链接,我就不放了):TOPSIS教程 目录 1. 层次分析法的局限性(主观求权重方法) 2. TOPSIS法引入 2.1 一个指标 ...

  7. Git 中的对象模型和文件的详细视图 —— Git 学习笔记 13

    Git 中的对象模型和文件的详细视图 文章目录 Git 中的对象模型和文件的详细视图 初始状态 编辑一个文件之后 暂存文件后 提交之后 参考资料 本文将用几幅图来可视化一个叫 file1的文件从修改到 ...

  8. 大智慧数据文件python_马克的Python学习笔记#模块和包 3

    让目录或者zip文件成为可以运行的脚本 我们的程序已经从一个简单的脚本进化为一个涉及多个文件的应用.我们希望能有某种简单的方式来让用户运行这个程序 如果应用程序已经进化为由多个文件组成的"庞 ...

  9. 文件编码和RandomAccessFile文件流的使用--IO学习笔记(一)

    文件编码 UTF-8编码:中文占用3个字节,英文占用1个字节 GBK编码:中文占用2个字节,英文占用1个字节 UTF-16BE编码:中文占用2个字节,英文占用两个字节 注意:其中UTF-16BE编码是 ...

  10. .NET Core开发实战(第11课:文件配置提供程序)--学习笔记

    11 | 文件配置提供程序:自由选择配置的格式 文件配置提供程序 Microsoft.Extensions.Configuration.Ini Microsoft.Extensions.Configu ...

最新文章

  1. java web 教案_《Java web程序设计》教案.pdf
  2. STM8L编程环境官方库+STVD+COSMIC+ST-Link
  3. 用户解锁不存在_解锁手机有6种方法,这些常识你知道吗?小白购机指南——解锁篇...
  4. Boost::context模块callcc的jump_void测试程序
  5. C#中listView列自动适应缩放的完美效果
  6. CodeForces - 1579G Minimal Coverage(dp)
  7. 情感分析算法从原理到PaddlePaddle实战全解
  8. sublime生产力提升利器
  9. oracle从删库到跑路,Mysql入门二十小题(DBA老司机带你删库到跑路)2018.11.26
  10. 【水果识别】基于matlab GUI自助水果超市【含Matlab源码 594期】
  11. CDN技术原理以及所用技术介绍
  12. 微商软文发布方法有哪些?文案怎么编辑?
  13. 大学计算机课挂科补考,【挂科的同学请注意!】关于本学期补考、缓考的通知(转)...
  14. DXR 实时光线追踪技术概览
  15. 计算机在课程中的应用,计算机科学技术在计算机教育中的应用
  16. linux lxde桌面快捷键,LXde 桌面有两下啊
  17. 安卓近距离通信--蓝牙通信开发
  18. 腾讯TDSQL全时态数据库系统论文入选VLDB
  19. 百鸡问题用计算机什么法解决,《穷举法解决问题》教学设计
  20. google多开设置

热门文章

  1. S3 Texture Compression
  2. 3COM小型办公室有线局域网方案
  3. mysql 平均月份_Mysql按月份统计和按时段统计SQL
  4. docker安装nginx并进行-v挂载
  5. Linux重定向指令
  6. linux系统修改系统时间
  7. python定义类_提升你的Python编程能力,细说类的继承,拿走不谢
  8. CodeGlance
  9. 强化学习6——policy gradient的变种State of the Art
  10. 二叉排序树(完整案例与完整C语言代码)