【发布时间】:2017-12-13 14:02:16
【问题描述】:
尝试通过 python 3 使用 reportlab 编写包含宏 (ā ēī ō ū) 的文档,但宏显示为框 (■)。该文档是用 Arial 字体编写的——但如果我在文字处理器中打开文件以检查字体,则这些框是“Segoe UI Symbol”字体。
用于在 Arial 中作为支持广泛 unicode 字符的字体导入(这似乎有效):
import reportlab.rl_config
reportlab.rl_config.warnOnMissingFontGlyphs = 0
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
pdfmetrics.registerFont(TTFont('Arial', 'Arial.ttf'))
我也是通过json导入字典,在记事本中打开json文件时是这样的:
{"example1":"b\u0101s"}
程序读写这个字典:
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("hello.pdf")
Story = [Spacer(1,2*inch)]
style = styles["Normal"]
with open('CompDict.json','r') as f:
m_dic=json.load(f)
for key,value in m_dic:
p=Paragraph(key+":"+value,style)
Story.append(p)
doc.build(Story)
结果应该是带有example1:bās 的pdf,但输出为example1:b■s
【问题讨论】:
-
只是一个观察:您显示的 JSON sn-p 不是有效的 JSON(需要双引号)。但这可能与您的问题无关。
-
Python 2.x 还是 3?
-
我使用的是 python 3.6