如何更改现有文档中超链接的样式,尤其是字体大小和名称

How to change style of hyperlinks in existing document, especially font size and name

我想坚持使用 python-docx 库。但如果有其他方式,我很乐意听到它们。

目前我正在使用此代码段更改文档中的样式,但链接不受影响。我应该重新创建它们吗?

from docx import Document
from docx.shared import Pt

document = Document("existing file.docx")

for paragraph in document.paragraphs:
    # paragraph.style = document.styles['Normal']
    for run in paragraph.runs:
        run.font.name = 'Arial'
        run.font.size = Pt(10)

片段来自此

from docx.oxml.shared import qn

此函数来自 here copy-paste。因为 paragraph.runs 没有返回子超链接的 运行 个实例。

def getParagraphRuns(paragraph):
    def _get(node, parent):
        for child in node:
            if child.tag == qn('w:r'):
                yield Run(child, parent)
            if child.tag == qn('w:hyperlink'):
                yield from _get(child, parent)
    return list(_get(paragraph._element, paragraph))

如果您只想获取超链接的 运行 个实例序列,请改用此函数。

def getHyperlinksRuns(paragraph):
    def _get(node, parent):
        for child in node:
            if child.tag == qn('w:hyperlink'):
                yield from returnRun(child, parent)
    def returnRun(node, parent):
        for child in node:
            if child.tag == qn('w:r'):
                yield Run(child, parent)
    return list(_get(paragraph._element, paragraph))

瞧瞧

for p in document.paragraphs:
    runs = getParagraphRuns(p) 
    # runs = getHyperlinksRuns(p)
    for run in runs:
        run.font.name = 'Arial'
        run.font.size = Pt(10)