2016年10月24日 星期一

Python Reportlib 生產各式<檔案><報表><發票>,背景列印PDF,Pywin32,Acrobat 系列 ...


以下是用Python裡面的Reportlib模組產生自己喜歡的PDF,
可以依照你要的頁面、紙張或印表機自訂大小,
例如名片、發票、收據、感熱列印機等等。 非常之好用。


###code by shadowwolf###
###2016/10/24###

#coding: utf8

import reportlab
from reportlab.pdfgen import canvas
from reportlab.lib.units import mm

pdf_file_name="D:/name_you_want.pdf"
c = reportlab.pdfgen.canvas.Canvas(pdf_file_name)
c.setPageSize((82.5*mm, 50*mm)) #自訂義頁面寬度、高度
#以下就是在canvas上加東加西,詳情請上官網查詢Documentation
c.drawString(10,10,"Hello World")
c.drawString(50,50,"Hello World2")
c.drawString(100,100,"Hello World3")
c.showPage() #產生頁面
c.save() #存檔

產生PDF之後,再用Acrobat的SDK(用Pywin32呼叫)。
記得要裝Acrobat的standard或是pro版,
我有用Acrobat 7, Acrobat XI試過都可以。
以下會以靜默模式把PDF文件丟入列印佇列,
並且用預設印表機 印出來

from win32com.client import Dispatch
avdoc = Dispatch('AcroExch.AVDoc')
avdoc.Open(pdf_file_name, 'name')
pages = avdoc.GetPDDoc().GetNumPages()
avdoc.PrintPagesSilent(0, pages-1, 3, 1, 0) ### 開始頁(0開始), 結束頁, PS, 二維碼, 是否縮放

沒有留言:

張貼留言