1

Reportlab で生成された PDF で、アジア フォント (中国語の簡体字/繁体字、日本語、および韓国語) を問題なく使用しています。ただし、最近、次のような暗号化オプションを有効にすることにしました。

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 
) 

アジア以外の言語の場合、暗号化は期待どおりに機能します。暗号化されたアジア フォントを使用すると、Adobe Reader で PDF を読み取ることができません。たとえば、簡体字中国語の場合、Adobe Reader から「フォント "STSong-Light" が見つかりません」というエラーが表示されます。

これを機能させないためにどの暗号化が壊れているかについて、誰か考えがありますか?

4

1 に答える 1

1

私も同じ問題を抱えていました。これで問題が解決しない場合があります。でも、日本語に指定すれば、インストール(この例ではIPAゴシック)とフォントの設定で
解決できます。 したがって、別の言語のフォントをインストールすることで問題を解決できますが、これはクールではありません。TTFont

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() 
于 2014-01-05T15:00:49.047 に答える