2011-11-06 96 views
3

我使用的是Mac OSX,但我需要一個獨立於平臺的方法來打印PDF文件。 我在Matplotlib中創建了一個圖表,並希望將其打印到我的打印機。如何使用Python從橫向打印PDF文件到打印機?

我可以設置畫布的方向以適應縱向版式:

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))) 

任何人都可以幫助我的代碼格式設置打印方向爲橫向?

回答

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'),你會看到對象都是不透明的。

+0

謝謝您的回答,我能夠打印「Image.eps」文件中直接使用:\t printfile = 'img.eps' # '檢驗.pdf' \t plt.savefig( 'img.eps',方向= 'landscape') \t proc = subprocess.Popen(shlex.split('lpr {f}'.format(f = printfile)))如何以編程方式執行epstopdf命令? – user1032355

+0

@ user1032355如果您想在在Python代碼中,你可以添加'import subprocess'和'subprocess.call'('epstopdf img.eps',shell = True)'。 –

+0

再次感謝大衛的澄清,當我運行它時:/ bin/sh :epstopdf:command not found「在MAC OSX 10.6.8上,但你的後續行動澄清了對shell的調用格式。 – user1032355