【问题标题】:How do I print a PDF file to a printer in landscape from Python?如何从 Python 将 PDF 文件打印到横向打印机?
【发布时间】:2011-12-23 02:36:34
【问题描述】:

我使用的是 Mac OSX,但我需要一种独立于平台的方法来打印 pdf 文件。 我在 Matplotlib 中创建了一个图表,并希望将其打印到我的打印机上。

我可以设置画布的方向以适应纵向布局:

fig.set_size_inches(  8.27,11.69) # set the figure size in inches

但使用:

fig.set_size_inches( 11.69, 8.27) 

打印裁​​剪后的纵向图形

我在这里的另一篇文章中找到了这个:

import subprocess
import shlex

printfile='test.pdf'
fig.savefig(printfile)
proc=subprocess.Popen(shlex.split('lpr {f}'.format(f=printfile)))

谁能帮我设置将打印方向设置为横向的代码格式?

【问题讨论】:

    标签: python pdf printing matplotlib


    【解决方案1】:

    我见过lpr -o landscape,但没有足够的经验知道它是否适用于所有打印机。

    您可以在生成图像时更改方向,而不是在打印时更改方向(如果它适合您的工作流程)。 matplotlib savefig 命令允许您指定以横向保存,但目前仅适用于 postscript。然而,这不是问题,因为我们可以轻松地将 postscript 文件转换为 PDF 格式。下面是一个例子。

    在 Python 中:

    from pylab import *
    import numpy as np
    
    x = np.arange(0, 10, 0.1)
    y = np.sin(x)
    plot(x, y)
    xlabel('x')
    ylabel('y')
    savefig('img.eps', orientation='landscape')
    

    为了方便和简洁,我省略了画布大小。

    现在我们有一个名为img.eps 的文件。在 shell 中执行以下操作。

    epstopdf img.eps
    

    下面是生成的 img.pdf 文件的样子:

    要记住这种方法的一个缺点是 postscript 不喜欢透明度,因此如果您想要透明度,这不适合您。要了解我的意思,请使用 matplotlib patch_collection.py 示例。将最后一行的pylab.show() 替换为pylab.savefig('patch.pdf'),运行它,然后查看生成的PDF 文件。它看起来像示例中的图像。但是,如果您执行pylab.savefig('patch.eps'),您将看到所有对象都是不透明的。

    【讨论】:

    • 感谢您的回答我可以直接使用以下方法打印“Image.eps”文件:printfile='img.eps'#'test.pdf' plt.savefig('img.eps', orientation='landscape') proc=subprocess.Popen(shlex.split('lpr {f}'.format(f=printfile))) 如何以编程方式执行 epstopdf 命令?
    • @user1032355 如果要在 Python 代码中做,可以添加 import subprocesssubprocess.call('epstopdf img.eps', shell=True)
    • 再次感谢大卫的澄清。当我运行它时,我在 MAC OSX 10.6.8 上得到 ::/bin/sh: epstopdf: command not found" 但您的后续工作澄清了对 shell 的调用格式。
    • @user1032355 我的机器上的epstopdf 似乎安装了MacTeX。如果您不需要 LaTeX,安装 MacTeX 可能有点过分。您可能也可以使用 Gimp、Photoshop、ImageMagick 等进行转换,但我一直使用 epstopdf,因为它可以正常工作。
    • 我现在正在下载 MacTex,但由于我需要一个跨平台的解决方案,所以我会坚持我目前所拥有的。这个答案适用于 MAC;稍后我会在 Windows 系统上尝试一下。我知道横向打印的 lpr 选项标志从 0 变为 1 我只是不知道命令格式...AAAgggh
    猜你喜欢
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-27
    相关资源
    最近更新 更多