Reportlab: азиатские шрифты с включенным шифрованием не работают - PullRequest
0 голосов
/ 22 марта 2011

Я использовал азиатские шрифты (китайский упрощенный / традиционный, японский и корейский) в моей отчетной лаборатории, генерировал 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 
) 

Для неазиатских языков шифрование работает, как и ожидалось.Когда мы используем азиатские шрифты с шифрованием, PDF не может быть прочитан Adobe Reader.Например, для упрощенного китайского языка мы получаем сообщение об ошибке «Не удается найти шрифт STSong-Light» из Adobe Reader.

У кого-нибудь есть какие-либо идеи о том, какое шифрование нарушает, чтобы это не сработало?

1 Ответ

0 голосов
/ 05 января 2014

У меня была такая же проблема. Это может не решить вашу проблему. Но, если я укажу это на японском языке,
Вы можете решить это, установив 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() 
...