2015-10-29 38 views
2

我想打印出PDF文件,但我不知道如何指定頁面格式。我想用A5格式打印所有的PDF文件。有人可以幫幫我嗎?如何在使用Python打印PDF文件時選擇紙張格式?

# this code works and prints the PDF File, but not in the A5 Format 
import subprocess 
printer='MyPrinter' # name of the printer 
pdffile=r"C:\Desktop\pdf_test\pdfFile.pdf" # path to PDF 
acroread=r"C:\Program Files (x86)\Adobe\Acrobat 10.0\Acrobat\Acrobat.exe" # path to Acrobat Reader 

# print the file 
cmd='"%s" /N /T "%s" "%s"' % (acroread, pdffile, printer) 
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
stdout, stderr=proc.communicate() 
exit_code=proc.wait() 

打印PDF文件的另一種方法,不知道如何在這裏指定格式。

import win32api 
pdffile=r"C:\Desktop\pdf_test\pdfFile.pdf" # path to PDF 

printer_name = 'MyPrinter' # name of the printer 
out = '/d:"%s"' % (printer_name) 
### print the PDF to the proper Printer 
win32api.ShellExecute(0, "print", pdffile, out, ".", 0) 
+0

你想縮放或裁剪,或者是什麼? –

回答

1

如果你的限制是,要在A5每個文檔打印,無論其原始大小的,我沒有看到一個辦法做到這一點直接在你已經在這裏顯示的示例代碼,你目前僅傳入打印機名稱和文件名。

您需要獲取打印機的設備上下文,以指定作業的頁面大小(將爲A5),並且因此如果打印機未裝入A5(或沒有裝入其定義的紙盤之一中;因爲不同的打印機會解決這種不同的方式,所以我必須在這裏模糊),它會暫停並顯示請求加載A5的請求。

我也在猜測這裏的其他細節,因爲我不確定您是否想將較小的文檔擴展爲A5尺寸,將它們旋轉爲最適合的尺寸,將它們保持在100%,但將它們置於頁面中心等等關鍵在於你的程序需要獲得你選擇的打印機的設備上下文,這樣你就會知道它的功能,以及如何要求輸出是來自特定打印機的A5輸出。

如果是單張打印機,一次只能裝入一種尺寸(A5或其他單一尺寸),那麼您可以使用A5紙張預加載它,並在沒有進一步說明的情況下將作業放入其中,或者要小心並指定A5作爲打印作業,理論上打印機將停止,直到A5加載完畢,而不是默認打印在A4上,或者冷凝以適應邊緣或從邊緣流血。

如果您可以控制作業輸出和正在使用的打印機,那麼您可以使用最少的設置來配置這兩者,以生成所需的輸出。如果您無法控制用戶將要爲輸出設備選擇的內容,則需要獲取該設備的設備上下文以指定打印作業的屬性(包括A5紙張尺寸),然後讓打印機會根據指示弄清楚它將如何執行。