2012-03-24 348 views

答えて

16

ユーザーガイドセクション2でコードをコピーして貼り付けると、その中に色付きのテキストが入った華やかな色の矩形ができます。おそらく、このアプローチはユーザーガイドではっきりしていないので、私はそれを試してみるのに時間を費やしていました。

キャンバスを描くことを想像する必要があります。描画する前にすべての設定を行う必要があります。以下は、テキストのスタイルを設定し、線を描き、矩形を描画する方法をより良く示すために用意された例です。

from reportlab.pdfgen import canvas 

def hello(c): 
    from reportlab.lib.units import inch 

    #First Example 
    c.setFillColorRGB(1,0,0) #choose your font colour 
    c.setFont("Helvetica", 30) #choose your font type and font size 
    c.drawString(100,100,"Hello World") # write your text 

    #Second Example 
    c.setStrokeColorRGB(0,1,0.3) #choose your line color 
    c.line(2,2,2*inch,2*inch) 

    #Third Example 
    c.setFillColorRGB(1,1,0) #choose fill colour 
    c.rect(4*inch,4*inch,2*inch,3*inch, fill=1) #draw rectangle 

c = canvas.Canvas("hello.pdf") 

hello(c) 
c.showPage() 
c.save() 
+7

私が知る限り、256色空間を使用すると動作しません。マニュアルでは、1を使用すると「すべて点灯」と表示されます。したがって、256,256,256を作成するには、実際には(1,1,1)を使用します。したがって、間に何かを得るには、小数点を使用する必要があります。私にとっては、RGB:(75,116,156)が欲しかったので、 'setFillColorRGB(0.29296875,0.453125,0.609375)'と書く必要がありました。これは、「75/256、116/256、156/256」に相当する。ちょっとばかげたIMOですが、完璧に出てきました。 – Garfonzo

+0

良い情報:) haventこれらの色のものに十分深く、私の将来の仕事に役立つかもしれない。 –

+0

これは実際に動作します!しかし、私はいくつかの異なる色を設定すると、テキストは透明に見える... – gbrennon

0

私は、現時点ではこれを確認することはできませんが、彼らはdrawCenteredStringを呼び出す前に色を設定するたびにリンクされている例で見れば彼らは常にだけrectsの色を設定するには、後者を使用して、setFillColor、決してsetFillColorRGBでそれを行います。あなたはすべてのエラーを持っているので、もしそうしてみてください代わりに、それはそのドキュメントでこれを言うかではない場合、私は知らないが、変数redがReportLabのモジュールの1つに定数として定義されて

self.canvas.setFillColor(red) 
self.canvas.drawCenteredString(...) 

に変更しますそれには、適切なモジュールを含めるようにしてください(正確な名前は私を現時点で逃しています)。

+0

setFillColorは()のいずれか、テキストの何もしません。 – Goro

+0

私は、この例が間違っていると思います。ドキュメントを見ると、ユーザガイドのセクション2.11では、このようにテキストの色を設定する例を示しています。あなたはテキスト以外のものの色を設定できますか?そうでない場合は、色を出力しないともっと一般的な問題かもしれません。 –

8
from reportlab.lib.colors import HexColor 
... 

# sets fill color like orange 
c.setFillColor(HexColor(0xff8100)) 
# or 
c.setFillColor(HexColor('#ff8100')) 

...