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

时间:2011-11-06 15:36:51

标签: python pdf printing matplotlib

我正在使用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)))

任何人都可以帮我使用代码格式将打印方向设置为横向吗?

1 个答案:

答案 0 :(得分:2)

我见过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文件的外观: Landscape image.

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