如何更改现有文档中超链接的样式,尤其是字体大小和名称
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)
我想坚持使用 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)