html文件嵌入到reportlab,Reportlab学习笔记
Python制作PDF的一個庫,效率非常高,比pypdf不知道快了多少。
我是完全照著官方文檔的順序來記錄筆記,只是部分內(nèi)容的順序有調(diào)整,方便后續(xù)查看。
文檔下載地址:https://www.reportlab.com/docs/reportlab-userguide.pdf
Chapter 1 環(huán)境篇
編程語言: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() # 保存當(dāng)前畫布頁面
c.save() # 保存文件并關(guān)閉畫布
結(jié)果如下圖:
pdfgen軟件包是用于生成PDF文檔的最低級別的接口,其本質(zhì)相當(dāng)于在一個畫布上進行繪畫的工具。
畫布應(yīng)被視為一張白紙,并且在紙上使用笛卡爾坐標(biāo)確定點(X,Y)坐標(biāo),默認(rèn)情況下在頁面的左下角具有(0,0)起點。
此外默認(rèn)情況下,第一個坐標(biāo)x朝右,第二個坐標(biāo)y朝上。
2.2 More about the Canvas - 關(guān)于畫布
一張畫布有很多屬性可以進行配置。
首先這個是畫布對象的初始屬性:
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處理標(biāo)準(zhǔn)輸出),然后將PDF文檔寫入其中。
注意:不能在HTML頁面中間內(nèi)聯(lián)傳遞PDF文檔!
pagesize
以點(1/72英寸)為單位的兩個數(shù)字的元組。畫布默認(rèn)為A4(國際標(biāo)準(zhǔn)頁面大小與美國標(biāo)準(zhǔn)字母大小不同),但最好明確指定它。在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,而不是使用常量。通過使用變量,即使頁面大小發(fā)生變化,頁邊距仍然有意義。
bottomup
已被棄用,將來可能會被刪除
pageCompression - 是否壓縮每個頁面
默認(rèn)情況下,不壓縮頁面流,因為壓縮會減慢文件生成過程。
如果輸出大小很重要,請設(shè)置pageCompression=1。但是請記住,壓縮后的文檔會變小,但生成起來會更慢。請注意,圖像始終是壓縮的,并且只有在每頁上都有大量文本和矢量圖形時,此選項才會節(jié)省空間。
encoding
在2.0版中已過時,99%的用戶可能會忽略它。所有TTF和常用的CID字體,此處傳遞的編碼將被忽略,因為在這些情況下reportlab庫本身知道正確的編碼。
encrypt
默認(rèn)情況下,文檔未加密。如果encrypt是字符串對象,則將其用作pdf的用戶密碼。如果encrypt是reportlab.lib.pdfencrypt.StandardEncryption的實例,則此對象用于加密pdf。
2.3 Drawing Operations - 繪圖操作
原文:https://www.cnblogs.com/quanquan616/p/11871591.html
總結(jié)
以上是生活随笔為你收集整理的html文件嵌入到reportlab,Reportlab学习笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络知识培训计划,计算机网络管理员
- 下一篇: word存为html图片有两个,如何批量