在尝试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,经检验,这是可行的。
(仔细观察两条语句的区别在哪)