2011-01-14 20 views
5

pythonから "Wheel Tags"を印刷する必要があります。ホイールタグには画像、線、テキストが含まれます。Pythonでグラフィックスを印刷する

Pythonチュートリアルには、画像libを使用してポストスクリプトファイルを作成するための2つの段落があります。それを読んだ後、私はまだデータをレイアウトする方法を知らない。私は、画像、テキスト、および線をレイアウトする方法のサンプルをいくつか持っていることを期待していましたか?

ありがとうございました。

答えて

3

http://effbot.org/imagingbook/psdraw.htm

注を参照してくださいこと:

  1. PSDrawモジュールが積極的に2005年以来維持してきたとは思われません。私は、その努力のほとんどが代わりにPDFフォーマットをサポートするようにリダイレクトされていると思います。代わりにpypdfを使用するほうが幸せかもしれません。

  2. それは「#のFIXME:不完全」のようなコメントをしている

  3. ページサイズの設定のいずれかの方法で持っているように見えていないソースに「まだ実装されていません」とを - 私が思い出すようにデフォルトを意味します〜A4(8.26 x 11.69インチ)

  4. すべての測定は1インチあたり72ポイントです。 - あなたが開始する準備ができている

    import Image 
    import PSDraw 
    
    # fns for measurement conversion  
    PTS = lambda x: 1.00 * x # points 
    INS = lambda x: 72.00 * x # inches-to-points 
    CMS = lambda x: 28.35 * x # centimeters-to-points 
    
    outputFile = 'myfilename.ps' 
    outputFileTitle = 'Wheel Tag 36147' 
    
    myf = open(outputFile,'w') 
    ps = PSDraw.PSDraw(myf) 
    ps.begin_document(outputFileTitle) 
    

    PSは今、指定されたファイルへのPostScriptを書き込みますPSDrawオブジェクトで、文書のヘッダが書かれています

あなたのような何かをする必要があります絵を描くもの。

画像を追加するには、次の行を追加するには

ps.setfont("Helvetica", PTS(12)) # PostScript fonts only - 
            # must be one which your printer has available 
loc = (  # where to put the text? 
    INS(1), # horizontal value - I do not know whether it is left- or middle-aligned 
    INS(3.25) # vertical value - I do not know whether it is top- or bottom-aligned 
) 
ps.text(loc, "Here is some text") 

:テキストを追加するには

im = Image.open("myimage.jpg") 
box = (  # bounding-box for positioning on page 
    INS(1), # left 
    INS(1), # top 
    INS(3), # right 
    INS(3)  # bottom 
) 
dpi = 300  # desired on-page resolution 
ps.image(box, im, dpi) 

lineFrom = (INS(4), INS(1)) 
lineTo = (INS(4), INS(9)) 
ps.line(lineFrom, lineTo) 

を...と私はすべてのオプションが表示されませんストロークウェイトを変更します。

終了したら、ファイルを閉鎖しなければならないような:

ps.end_document() 
myf.close() 

編集:私はストロークの重みを設定する上で読んでのビットをしていた、と私は別のモジュール間で走った、psfile :http://seehuhn.de/pages/psfile#sec:2.0.0モジュール自体は非常に小さく見えます。彼は未加工の追記をたくさん書いていますが、舞台裏で何が起こっているのかがわかります。

1

この種の作業には、オープンソースライブラリReportlabをお勧めします。

非常に使いやすく、PDF形式に直接出力します。

公式ドキュメントから非常に単純な例:

from reportlab.pdfgen import canvas 
def hello(c): 
    c.drawString(100,100,"Hello World") 
c = canvas.Canvas("hello.pdf") 
hello(c) 
c.showPage() 
c.save() 

限り、PILがインストールされているように、あなたのページに画像を追加することも非常に簡単です:

canvas.drawImage(self, image, x,y, width=None,height=None,mask=None) 

「画像」 PIL Imageオブジェクト、または使用するイメージのファイル名のいずれかです。

documentationの例もたくさんあります。

関連する問題