在尝试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,经检验,这是可行的。

(仔细观察两条语句的区别在哪)

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐