在上一篇《Python reportlab庫之hello world》中我們演示了簡單Demo,在Demo中使用Canvas對象。
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()
本篇文章將簡單介紹一下Canvas對象,首先我先來看看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兩個參數(shù),canvas默認的大小是A4紙(美國標(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
運行效果
letter
bottomup 參數(shù)用于切換坐標(biāo)系。一些系統(tǒng)把(0,0)坐標(biāo)設(shè)置在底部左側(cè)。bottomup 未來可能會被移除。
pageCompression 選擇是否壓縮每個頁面。默認的頁面是不被壓縮的,因為壓縮會影響文件處理速度。如果pageCompression =1,那么文件將被壓縮到最小,但生成時間也會被延長。注意,圖片總是會被壓縮。如果您有大量的文章和矢量圖像會造成文件過大,使用pageCompression參數(shù)將有效減少文件體積。
encoding 參數(shù)在2.0版本上已經(jīng)省略了,大家基本上可以忽略這個參數(shù)。
verbosity 參數(shù)參數(shù)確定打印多少日志信息。默認情況下,verbosity 為0。如果值為1,您將得到生成文檔是的日志信息。數(shù)值越高可能會在未來產(chǎn)生更多的日志輸出。
encrypt 參數(shù)決定文檔是否加密。默認情況下,文檔是不加密的。