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。例如,对于简体中文,我们会从 Adob​​e Reader 中收到“找不到字体“STSong-Light”错误。

任何人都知道什么加密正在破坏以使其无法正常工作?

4

1 回答 1

1

我有同样的问题。这可能无法解决您的问题。但是,如果我把它指定为日文,
你可以通过安装来解决它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() 
于 2014-01-05T15:00:49.047 回答