2013-06-09 19 views
5

latin2文字を適切な方法で変換するオプションはありますか?私は学校のプロジェクトに磨きの手紙が必要です。ここで私は、PDFDjango reportlab latin2エンコーディング

#!/usr/bin/python 
# -*- utf-8 -*- 

from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import letter, A4 



def GenerujPustyArkusz(c): 
    c.setFont("Times-Roman", 8) 
    c.drawString(450,750, u"Załącznik nr 2 do Regulaminu") 


def test(): 
    c = canvas.Canvas("test.pdf", pagesize=letter) 
    GenerujPustyArkusz(c) 
    c.showPage() 
    c.save() 


test() 

を生成する方法をいくつかのコードであり、私はこれが得る:

Za■■cznik nr 2 do Regulaminu 

ノー結果といくつかのエンコーディングのトリックを試してみました。

+0

ここで、間違った出力が得られますか?生成されたPDFで? –

+0

はい、これは私が得るものはpdfからコピーされています(コピーした 'nn'を黒い四角で置き換えました - これは私がpdfで見るものです)。 – lisek

+0

この行を 'GenerujPustyAskusz'メソッドで試してみてください:' c.drawString(450,750、 "Załączniknr 2 do Regulaminu" .decode( 'utf-8')) 'また、なぜlatin2としてタグ付けしていますか? utf-8を使っていますか? –

答えて

6

私の主な問題は、使用しているフォントにそのような磨き文字がないことです。 このコードは、私のために働いて、あなたが望んでいた文字が現れた:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import letter, A4 
from reportlab.pdfbase import pdfmetrics 
from reportlab.pdfbase.ttfonts import TTFont 

def GenerujPustyArkusz(c): 
    pdfmetrics.registerFont(TTFont('Verdana', 'Verdana.ttf')) 
    c.setFont("Verdana", 8) 
    s = u"Załącznik nr 2 do Regulaminu" 
    c.drawString(450,750, s) 

def test(): 
    c = canvas.Canvas("test.pdf", pagesize=letter) 
    GenerujPustyArkusz(c) 
    c.showPage() 
    c.save() 

test() 

あなたが他のフォントを使用したい場合は、ポリッシュ文字を含めるしたい書体を見つける必要があります。

こちらがお役に立てば幸いです。

+1

Awosome!できます。ありがとう、私は多くの時間を節約しました。解決済み – lisek

+0

私はうれしいですが、もしそれがあなたに有益だったら、答えを受け入れてください:) –

+0

今は 'Canvas.getAvailableTTFonts()'メソッドしかない –

関連する問題