2016-08-15 9 views
1

数日前、私はPython34でReportLabを使い始めました。かなり良いパッケージですが、私は克服する方法がわからないという大きな問題が1つあります。Python 3.4で作成されたReportLab pdfの文字がありません

誰かが自分のコードを確認してこれを乗り越えるのに役立つでしょうか?問題はスロベニア語の文字čと関連しています。タイトルには問題はありませんが、後でpdfファイルには私はその手紙を見ることができません。

私のコードは以下の通りです:

from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer 
from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.rl_config import defaultPageSize 
from reportlab.lib.units import inch 

from reportlab.pdfbase import pdfmetrics 
from reportlab.pdfgen import canvas 
from reportlab.pdfbase.ttfonts import TTFont 
pdfmetrics.registerFont(TTFont('Vera', 'Vera.ttf')) 

PAGE_HEIGHT=defaultPageSize[1] 
PAGE_WIDTH=defaultPageSize[0] 
styles = getSampleStyleSheet() 

Title = "Izračun pokojnine" 
bogustext =("""ččččččččččččččččččč""") 

def myPage(canvas, doc): 
    canvas.saveState() 
    canvas.setFont('Vera',16) 
    canvas.drawCentredString(PAGE_WIDTH/2.0, PAGE_HEIGHT-108, Title) 
    canvas.restoreState() 

def go(): 
    doc = SimpleDocTemplate("phello.pdf") 
    Story = [Spacer(1,2*inch)] 
    style = styles["Normal"] 
    p = Paragraph(bogustext, style) 
    Story.append(p) 
    Story.append(Spacer(1,0.2*inch)) 
    doc.build(Story, onFirstPage=myPage) 

go() 

私はpdfファイルを作るとき、私はこれを取得: タイトルと本文中の文字Cとの間に差があるのはなぜenter image description here

ありがとうございます!

よろしく、デビッド

+0

python 2.xまたは3.x? –

+0

@joel goldstick:Python 3.4 – DavidV

答えて

1

問題がタイトルにあなたは(私の記憶が正しければ)Times-RomanあるReportLabので使用されるデフォルトのフォントを使用しているテキストで、フォントとしてVeraを使用していることです。

表示されているブラックボックスは、表示しようとしている文字の記号が現在のフォント(Times-Roman)にないことを示しています。だから、それを修正するには、テキストのフォントをčのシンボルを含むフォントに変更する必要があります。これを行う1つの方法は、このような新しいスタイルを作成することである:

ParagraphStyle('MyNormal', 
       parent=styles['Normal'], 
       fontName='Vera') 

いくつかのケースでは、あなたがthis answer I posted earlier this year.をチェックアウトする場合があります。その場合には代替フォントを形成するシンボルで不足しているシンボルを置換する方が簡単かもしれません

+1

多くの@ B8vredeに感謝します:)それは魅力のように機能します。あなたの答えを読む前に、私はほとんど自分で同じ解決策に出ました....しかし、私はあなたが私をたくさん助けてくれたことを認めなければなりません:)もう一度感謝します! – DavidV

関連する問題