如何从Python将PDF文件打印到横向打印机?

如何从Python将PDF文件打印到横向打印机?,python,pdf,printing,matplotlib,Python,Pdf,Printing,Matplotlib,我正在使用MacOSX,但我需要一种平台无关的方法来打印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

我正在使用MacOSX,但我需要一种平台无关的方法来打印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)))

有人能帮我设置横向打印方向的代码格式吗?

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

您可以在生成图像时更改方向(如果符合您的工作流程),而不是在打印时更改方向。matplotlib命令允许您指定横向保存,但当前仅用于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为例,了解我的意思。将最后一行的
pylab.show()
替换为
pylab.savefig('patch.pdf')
,运行它,然后查看生成的pdf文件。它将看起来像示例中的图像。但是,如果你做了
pylab.savefig('patch.eps')
,你会看到这些对象都是不透明的。

谢谢你的回答,我能够直接使用printfile='img.eps'#'test.pdf'plt.savefig('img.eps',orientation='scape')proc=subprocess.Popen(shlex.split('lpr{f}'。格式(f=printfile)),打印文件)如何以编程方式执行epstopf命令?@user1032355如果您想在Python代码中执行,可以添加
import子流程
subprocess.call('epstopf img.eps',shell=True)
。再次感谢David的澄清。运行它时,我得到::/bin/sh:epstopf:command not found“在MAC OSX 10.6.8上,但您的后续操作澄清了对shell的调用格式。@user1032355我的机器上的
epstopdf
似乎是与一起安装的。如果您不需要LaTeX,安装MacTeX可能有点过头了。您也可以使用Gimp、Photoshop、ImageMagick和其他工具进行转换,但我一直使用
epstopdf
,因为它可以正常工作。我现在正在下载MacTex,但由于我需要一个跨平台的解决方案,我将坚持使用目前为止的解决方案。这个答案适用于MAC电脑;稍后我将在Windows系统上试用它。我知道横向打印的lpr选项标志从0变为1我只是不知道命令格式…AAAgggh