私はpdfを作成するためにreportlabを使用しています。pythonでreportlab Canvasのフォントを設定する方法は?
pdf = Canvas('test.pdf')
pdf.setFont('Tahoma', 16)
しかし、私が代わりに'Tahoma'
の'Courier'
を使用する場合、問題はありません。私は次のメソッドを使用してフォントを設定しようとすると、私はKeyError
を取得します。タホマをどうやって使うことができますか?
私はpdfを作成するためにreportlabを使用しています。pythonでreportlab Canvasのフォントを設定する方法は?
pdf = Canvas('test.pdf')
pdf.setFont('Tahoma', 16)
しかし、私が代わりに'Tahoma'
の'Courier'
を使用する場合、問題はありません。私は次のメソッドを使用してフォントを設定しようとすると、私はKeyError
を取得します。タホマをどうやって使うことができますか?
Perhabs TahomaはTrueTypeフォントであり、最初に登録する必要があります。 ReportLabののユーザーガイドによると、あなたはこれを実行する必要があります。
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('Vera', 'Vera.ttf'))
pdfmetrics.registerFont(TTFont('VeraBd', 'VeraBd.ttf'))
pdfmetrics.registerFont(TTFont('VeraIt', 'VeraIt.ttf'))
pdfmetrics.registerFont(TTFont('VeraBI', 'VeraBI.ttf'))
canvas.setFont('Vera', 32)
canvas.drawString(10, 150, "Some text encoded in UTF-8")
canvas.drawString(10, 100, "In the Vera TT Font!")
キャンバスオブジェクトは、現在登録されているすべての(したがって、使用可能)フォントを返す必要がありますgetAvailableFonts
方法があります。
DejaVuSansフォントをアプリケーションに追加すると、私の問題が解決しました。ここ はコード
pdfmetrics.registerFont(TTFont('DejaVuSans','DejaVuSans.ttf'))
の抜粋であり、すべての符号化のためにUTF8を使用します。:)あなたが私の一日行わ
おかげで、それが働いていた、このような方法でOpenTypeフォントを使用することがとにかくあり... – srisar
最終私はそれがopentypeをサポートしていないことを確認した。最近私はOTFを使う必要があったので、fontforgeでTTFに変換することができました。しかし、OTFは新しいフォーマットなので、いくつかの機能が失われる可能性があります。私にとっては幸運なことに、その時は違いはありませんでした。 –
私はConsolasフォントを使いたいと思っていましたが、それはopentypeのようです。とにかく素晴らしいチップのおかげで.. – srisar