2011-03-22 32 views
0

我一直在reportlab生成的pdf中使用亞洲字體(中文簡體/繁體,日文和韓文),而現在還沒有發佈。但是最近我們決定啓用這樣的加密選項:Reportlab:啓用了加密的亞洲字體不起作用

from reportlab.pdfbase import pdfmetrics 
from reportlab.pdfbase.cidfonts import UnicodeCIDFont 
pdfmetrics.registerFont(UnicodeCIDFont("STSong-Light")) 

enc = pdfencrypt.StandardEncryption( 
    "", canPrint=1, canModify=0, canCopy=0, canAnnotate=0 
) 

self._Report = SimpleDocTemplate( 
    save_file, 
    topmargin=0.75*inch, bottommargin=0.75*inch, 
    rightmargin=0.70*inch, leftmargin=0.70*inch, 
    showBoundary=0, 
    author="xxx", 
    title="xxx", 
    subject=xxx", 
    encrypt=enc 
) 

對於非亞洲語言,加密按預期工作。當我們使用加密的亞洲字體時,pdf不能被Adobe閱讀器讀取。例如利用簡化的中國,我們從Adobe Reader下載「無法找到字體‘STSong-光’的錯誤。

任何人有什麼樣的加密是打破不使這項工作任何想法?

+1

不是解決方法是解決方案,但它可以在其他PDF查看器中工作嗎?如果這與Adobe Reader處理PDF文件的方式有關,可能會給出一些提示,並提供一些解決方案的信息。 – 2011-03-23 01:31:25

+0

我厭倦了其他PDF閱讀器,他們給出了同樣的錯誤,「找不到STSong-Light」。只要沒有啓用加密,這些相同的觀衆就能正常工作。我使用啓用和禁用的加密來區分相同的文件,並且它們都具有完全相同的字體定義。唯一不同的是流被加密。不知何故,加密正在破壞pdf結構中的內部內容。 – Sandstone 2011-04-06 15:53:42

+0

嗯,那麼我認爲這可能是ReportLab的一個錯誤。您可以嘗試在ReportLab用戶郵件列表上報告。 http://two.pairlist.net/mailman/listinfo/reportlab-users – 2011-04-06 19:55:03

回答

0

我有同樣的問題。這可能不是解決你的問題。 但是,如果我指定它爲日本,
您可以通過安裝TTFont(在本例中爲IPA哥特式), 解決它,並設置字體。
因此,通過安裝另一種語言字體,可以解決這個問題,雖然 這不是很酷。

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

fontname = 'IPA Gothic' 
pdfmetrics.registerFont(TTFont(fontname,'{directory that you put the font}/ipag.ttf')) 
p = canvas.Canvas(response,pagesize=A4) 
p.setFont(fonatname,13) 
p.drawString(100,100,u'日本語,中國語,韓國語') 
p.showPage() 
p.save() 
相關問題