我正在尝试打印出PDF文件,但我不知道如何指定页面格式。我想以A5格式打印所有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的请求。
我也在这里猜测其他细节,因为我不确定你是否想要将较小的文档扩展到A5尺寸,旋转它们以获得最佳效果,将它们保持在100%但是将它们放在关键是您的流程需要获取所选打印机的设备上下文,以便您了解其功能,以及如何要求输出为该特定打印机的A5输出提交的工作。
如果它是单一尺寸的打印机,一次只能装载一种尺寸(A5或其他单一尺寸),那么您可以使用A5纸张预装它并在其中投入作业而无需进一步说明,或者更小心并为打印作业指定A5,理论上打印机将停止直到A5加载,而不是默认打印在A4上,或者压缩以适应或从边缘流下。
如果您可以控制作业输出和正在使用的打印机,则可以使用最少的设置来配置两者以生成所需的输出。如果您无法控制用户为输出设备选择的内容,则需要获取该设备的设备上下文以指定打印作业的属性(包括A5纸张大小),并让打印机弄清楚它将如何按照指示去做。