Символы Unicode - это блоки в Geraldo/ReportLab, сгенерированном PDF
Я сталкиваюсь с некоторыми проблемами, связанными с Unicode, при создании отчетов в формате PDF с использованием Geraldo и ReportLab.
Когда строки Unicode, содержащие азиатские символы, передаются в отчет, они отображаются в выходном PDF-файле в виде черных ящиков. Этот пример (http://dl.dropbox.com/u/2627296/report.pdf) был создан с использованием следующего кода:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from geraldo import Report, ReportBand, ObjectValue
from geraldo.generators import PDFGenerator
class UnicodeReport(Report):
title = 'Report'
class band_detail(ReportBand):
elements = [ObjectValue(attribute_name='name')]
if __name__ == '__main__':
objects = [{'name': u'한국어/조선말'}, {'name': u'汉语/漢語'}, {'name': u'オナカップ'}]
rpt = UnicodeReport(queryset=objects)
rpt.generate_by(PDFGenerator, filename='/tmp/report.pdf')
Я использую Python 2.7.1, Geraldo 0.4.14 и ReportLab 2.5. Система Ubuntu 11.04 64-разрядная. Файл.oy также имеет кодировку UTF-8. Черные ящики видны при просмотре PDF в Document Viewer 2.32.0, Okular 0.12.2 и Adobe Reader 9.
Любая помощь с благодарностью, спасибо.
1 ответ
Вы должны указать название шрифта, как в официальном примере " Дополнительные шрифты". использование additional_fonts
а также default_style
:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from geraldo import Report, ReportBand, ObjectValue
from geraldo.generators import PDFGenerator
class UnicodeReport(Report):
title = 'Report'
additional_fonts = {
'wqy': '/usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc'
}
default_style = {'fontName': 'wqy'}
class band_detail(ReportBand):
elements = [ObjectValue(attribute_name='name')]
if __name__ == '__main__':
objects = [{'name': u'한국어/조선말'}, {'name': u'汉语/漢語'}, {'name': u'オナカップ'}]
rpt = UnicodeReport(queryset=objects)
rpt.generate_by(PDFGenerator, filename='/tmp/report.pdf')
ObjectValue()
также имеет именованный параметр style
:
elements = [ObjectValue(attribute_name='name', style={'fontName': 'wqy'})]
Этот шрифт с открытым исходным кодом и может быть загружен здесь: http://sourceforge.net/projects/wqy/files/ (я думаю, что он поставляется с Ubuntu 11.04)