2013-06-09 5 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łącznik nr 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! 그것은 작동합니다. 고마워, 많은 시간을 절약 해 줬어. SOLVED – lisek

+0

나는 다행이다. 만약 당신이 유용했다면 답을 받아 들일 것을 권한다. :) –

+0

이제'Canvas.getAvailableTTFonts()'메소드 만 있다면 ... –