python-docx 设置中文字体失败的解决办法
在尝试pdf转word的过程中,需要将从pdf文件中读取到的文本内容写入word文档中,但是自动配置的字体格式往往不太美观,因此需要我们手动设置自己喜欢的字体格式。而文本内容又分为中文跟英文,可以分别设置不同的字体。这是源码:def remove_control_characters(content):mpa = dict.fromkeys(range(32))return content.tra
·
在尝试pdf转word的过程中,需要将从pdf文件中读取到的文本内容写入word文档中,但是自动配置的字体格式往往不太美观,因此需要我们手动设置自己喜欢的字体格式。而文本内容又分为中文跟英文,可以分别设置不同的字体。
这是源码:
def remove_control_characters(content):
mpa = dict.fromkeys(range(32))
return content.translate(mpa)
def save_text_to_word(content, file_path):
doc = Document()
for line in content.split('\n'):
paragraph = doc.add_paragraph()
text = paragraph.add_run(remove_control_characters(line))
text.font.size = Pt(15)
text.font.name = 'Times New Roman' # 控制是西文时的字体
text.element.rPr.rFonts.set(qn('w:eastAsia'), u'楷体') #控制是中文时的字体
doc.save(file_path)
设置英文的字体往往没有什么问题,但是在设置中文字体的时候,可能会出现一点小问题。
在一般情况下,像下面这行代码也可以实现。
text.element.rPr.rFonts.set(qn('w:eastAsia'), '楷体')
但是在上面程序段中,在debug的时候发现根本不会运行到设置中文字体的语句中,因此转换也是失败的。后来通过查阅发现还有个写法是在字体前加个u,经检验,这是可行的。
(仔细观察两条语句的区别在哪)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献3条内容
所有评论(0)