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() # 保存文件并关闭画布
结果如下图:
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学习笔记相关推荐
- algorithm头文件下的常用函数-学习笔记
algorithm头文件下的常用函数-学习笔记 max(x,y),min(x,y),abs(x) swap(x,y) reverse(it,it2) next_permutation() fill( ...
- linux rcs文件中的ip,linux学习笔记之diff和patch命令
关键字:Linux 学习笔记 运维 系统 命令 一.命令的功能 diff命令的功能为逐行比较两个文本文件,列出其不同之处.可是做成diff记录也就是补丁. patch就是利用diff制作的补丁来打到文 ...
- linux解挂文件磁盘的命令,Linux学习笔记(4)磁盘分区(fdisk)、挂载与文件系统命令...
Linux学习笔记(4)磁盘分区(fdisk).挂载与文件系统命令 1.磁盘分区是怎么表示的? 1.1 对于IDE接口,第一主盘为hda,第1从盘为hdb,第1从盘的第1个分区为hdb1 1.2 对于 ...
- .NET Core开发实战(第24课:文件提供程序:让你可以将文件放在任何地方)--学习笔记...
24 | 文件提供程序:让你可以将文件放在任何地方 文件提供程序核心类型: 1.IFileProvider 2.IFileInfo 3.IDirectoryContents IFileProvider ...
- kettle将文件路径定义为_kettle学习笔记(三)——kettle资源库、运行方式与日志...
一.kettle资源库 资源库是用来保存转换任务的,用户通过图形界面创建的的转换任务可以保存在资源库中. 资源库可以使多用户共享转换任务,转换任务在资源库中是以文件夹形式分组管理的,用户可以自定义文件 ...
- 如何用matlaab把csv转为mat文件_数学建模竞赛学习笔记:用TOPSIS模型进行综合评价
笔记整理来自清风老师的数学建模课程(可以在B站里搜索到,头条无法放站外链接,我就不放了):TOPSIS教程 目录 1. 层次分析法的局限性(主观求权重方法) 2. TOPSIS法引入 2.1 一个指标 ...
- Git 中的对象模型和文件的详细视图 —— Git 学习笔记 13
Git 中的对象模型和文件的详细视图 文章目录 Git 中的对象模型和文件的详细视图 初始状态 编辑一个文件之后 暂存文件后 提交之后 参考资料 本文将用几幅图来可视化一个叫 file1的文件从修改到 ...
- 大智慧数据文件python_马克的Python学习笔记#模块和包 3
让目录或者zip文件成为可以运行的脚本 我们的程序已经从一个简单的脚本进化为一个涉及多个文件的应用.我们希望能有某种简单的方式来让用户运行这个程序 如果应用程序已经进化为由多个文件组成的"庞 ...
- 文件编码和RandomAccessFile文件流的使用--IO学习笔记(一)
文件编码 UTF-8编码:中文占用3个字节,英文占用1个字节 GBK编码:中文占用2个字节,英文占用1个字节 UTF-16BE编码:中文占用2个字节,英文占用两个字节 注意:其中UTF-16BE编码是 ...
- .NET Core开发实战(第11课:文件配置提供程序)--学习笔记
11 | 文件配置提供程序:自由选择配置的格式 文件配置提供程序 Microsoft.Extensions.Configuration.Ini Microsoft.Extensions.Configu ...
最新文章
- java web 教案_《Java web程序设计》教案.pdf
- STM8L编程环境官方库+STVD+COSMIC+ST-Link
- 用户解锁不存在_解锁手机有6种方法,这些常识你知道吗?小白购机指南——解锁篇...
- Boost::context模块callcc的jump_void测试程序
- C#中listView列自动适应缩放的完美效果
- CodeForces - 1579G Minimal Coverage(dp)
- 情感分析算法从原理到PaddlePaddle实战全解
- sublime生产力提升利器
- oracle从删库到跑路,Mysql入门二十小题(DBA老司机带你删库到跑路)2018.11.26
- 【水果识别】基于matlab GUI自助水果超市【含Matlab源码 594期】
- CDN技术原理以及所用技术介绍
- 微商软文发布方法有哪些?文案怎么编辑?
- 大学计算机课挂科补考,【挂科的同学请注意!】关于本学期补考、缓考的通知(转)...
- DXR 实时光线追踪技术概览
- 计算机在课程中的应用,计算机科学技术在计算机教育中的应用
- linux lxde桌面快捷键,LXde 桌面有两下啊
- 安卓近距离通信--蓝牙通信开发
- 腾讯TDSQL全时态数据库系统论文入选VLDB
- 百鸡问题用计算机什么法解决,《穷举法解决问题》教学设计
- google多开设置