【问题标题】:How to chose Paper Format when printing a PDF File with Python?使用 Python 打印 PDF 文件时如何选择纸张格式?
【发布时间】:2016-01-29 14:28:25
【问题描述】:

我正在尝试打印 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)

【问题讨论】:

  • 你想缩放还是裁剪,还是什么?

标签: python pdf subprocess


【解决方案1】:

如果您的限制是您希望在 A5 中打印每个文档,而不管其原始大小如何,我看不到在您在此处显示的示例代码中直接执行此操作的方法,因为您目前只传入打印机名称和文件名。

您需要获取打印机的设备上下文以指定作业的页面大小,即 A5,因此如果打印机未加载 A5(或未将其放入其定义的纸盘之一;我必须在这里含糊不清,因为不同的打印机会以不同的方式解决这个问题),它会暂停并显示加载 A5 的请求。

我也在猜测这里的其他细节,因为我不确定您是否要将较小的文档扩展到 A5 大小、旋转它们以获得最佳尺寸、将它们保持在 100% 但将它们置于页面中心等。关键是您的流程需要获取所选打印机的设备上下文,以便您了解它的功能,以及如何为您提交的作业要求输出为来自该特定打印机的 A5。

如果它是单一尺寸的打印机,一次只能装入一种尺寸(A5 或其他单一尺寸),那么您可以预先装入 A5 纸并在没有进一步说明的情况下将作业扔给它,或者是更加小心并为打印作业指定 A5,理论上打印机将停止直到加载 A5,而不是默认在 A4 上打印,或者压缩以适合或溢出边缘。

如果您可以同时控制作业输出和正在使用的打印机,那么您可以通过最少的设置对两者进行配置以生成所需的输出。如果您无法控制用户将为输出设备选择什么,那么您将需要获取该设备的设备上下文以指示您的打印作业的属性(包括 A5 纸张尺寸),并让打印机弄清楚它将如何按照指示进行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-26
    • 2012-11-16
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2018-12-25
    相关资源
    最近更新 更多