我正在使用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)))
任何人都可以帮我使用代码格式将打印方向设置为横向吗?
答案 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
文件的外观:
这种方法要记住的一个缺点是后记不喜欢透明度,所以如果你想要透明度,这不适合你。要看看我的意思,请参考matplotlib patch_collection.py示例。用pylab.show()
替换最后一行的pylab.savefig('patch.pdf')
,运行它,然后查看生成的PDF文件。它看起来像示例中的图像。但是,如果您执行pylab.savefig('patch.eps')
,则会看到对象都是不透明的。