自動生成されたPDFに異なる色のテキストを使用したいとします。reportlab.pdfgenでテキスト/フォントの色を変更する方法
the reportlab docsによると、私がする必要があるすべては、次のとおりです。
self.canvas.setFillColorRGB(255,0,0)
self.canvas.drawCentredString(...)
しかし、それは何もしません。テキストは何に関係なく黒です。
自動生成されたPDFに異なる色のテキストを使用したいとします。reportlab.pdfgenでテキスト/フォントの色を変更する方法
the reportlab docsによると、私がする必要があるすべては、次のとおりです。
self.canvas.setFillColorRGB(255,0,0)
self.canvas.drawCentredString(...)
しかし、それは何もしません。テキストは何に関係なく黒です。
ユーザーガイドセクション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()
私は、現時点ではこれを確認することはできませんが、彼らはdrawCenteredString
を呼び出す前に色を設定するたびにリンクされている例で見れば彼らは常にだけrectsの色を設定するには、後者を使用して、setFillColor
、決してsetFillColorRGB
でそれを行います。あなたはすべてのエラーを持っているので、もしそうしてみてください代わりに、それはそのドキュメントでこれを言うかではない場合、私は知らないが、変数red
がReportLabのモジュールの1つに定数として定義されて
self.canvas.setFillColor(red)
self.canvas.drawCenteredString(...)
に変更しますそれには、適切なモジュールを含めるようにしてください(正確な名前は私を現時点で逃しています)。
setFillColorは()のいずれか、テキストの何もしません。 – Goro
私は、この例が間違っていると思います。ドキュメントを見ると、ユーザガイドのセクション2.11では、このようにテキストの色を設定する例を示しています。あなたはテキスト以外のものの色を設定できますか?そうでない場合は、色を出力しないともっと一般的な問題かもしれません。 –
from reportlab.lib.colors import HexColor
...
# sets fill color like orange
c.setFillColor(HexColor(0xff8100))
# or
c.setFillColor(HexColor('#ff8100'))
...
私が知る限り、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
良い情報:) haventこれらの色のものに十分深く、私の将来の仕事に役立つかもしれない。 –
これは実際に動作します!しかし、私はいくつかの異なる色を設定すると、テキストは透明に見える... – gbrennon