在上一篇《Python reportlab庫(kù)之hello world》中我們演示了簡(jiǎn)單Demo袱院,在Demo中使用Canvas對(duì)象铐殃。
from reportlab.pdfgen import canvas
def hello(c):
c.drawString(100,100,"Hello World")
c = canvas.Canvas("hello.pdf")
hello(c)
c.showPage()
c.save()
本篇文章將簡(jiǎn)單介紹一下Canvas對(duì)象韧拒,首先我先來(lái)看看Canvas的構(gòu)造函數(shù)
def __init__(self,filename,
pagesize=(595.27,841.89),
bottomup = 1,
pageCompression=0,
encoding=rl_config.defaultEncoding,
verbosity=0
encrypt=None)
filename參數(shù)控制最終PDF文件的名稱
pagesize 參數(shù)有width和height兩個(gè)參數(shù)畔况,canvas默認(rèn)的大小是A4紙(美國(guó)標(biāo)志信件采用的就是A4),具體demo如下
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, A4
myCanvas = canvas.Canvas('myfile.pdf', pagesize=letter)
width, height = letter #keep for later
運(yùn)行效果
bottomup 參數(shù)用于切換坐標(biāo)系剩檀。一些系統(tǒng)把(0,0)坐標(biāo)設(shè)置在底部左側(cè)贴谎。bottomup 未來(lái)可能會(huì)被移除汞扎。
pageCompression 選擇是否壓縮每個(gè)頁(yè)面。默認(rèn)的頁(yè)面是不被壓縮的擅这,因?yàn)閴嚎s會(huì)影響文件處理速度澈魄。如果pageCompression =1,那么文件將被壓縮到最小仲翎,但生成時(shí)間也會(huì)被延長(zhǎng)痹扇。注意,圖片總是會(huì)被壓縮溯香。如果您有大量的文章和矢量圖像會(huì)造成文件過(guò)大鲫构,使用pageCompression參數(shù)將有效減少文件體積。
encoding 參數(shù)在2.0版本上已經(jīng)省略了玫坛,大家基本上可以忽略這個(gè)參數(shù)结笨。
verbosity 參數(shù)參數(shù)確定打印多少日志信息。默認(rèn)情況下湿镀,verbosity 為0炕吸。如果值為1,您將得到生成文檔是的日志信息肠骆。數(shù)值越高可能會(huì)在未來(lái)產(chǎn)生更多的日志輸出算途。
encrypt 參數(shù)決定文檔是否加密。默認(rèn)情況下蚀腿,文檔是不加密的嘴瓤。