XML和python-pptx模块非常新,我想删除每个页面上都存在的单个超链接
到目前为止,我自己的尝试是检索文件,更改zip
格式并将其解压缩到单独的文件夹中
然后找到以下属性 <a:hlinkClick r:id="RelId4">
并删除它,同时删除与此幻灯片相对应Relationship
的xml.rels
文件中的属性。
然后,我重新压缩并将扩展名更改为pptx,这会罚款。然后,我尝试在Python中复制此代码,以便创建持续的自动化程序。
我的尝试:
from pathlib import Path
import zipfile as zf
from pptx import Presentation
import re
import xml.etree.ElementTree as ET
path = 'mypath'
ppts = [files for files in Path(path).glob('*.pptx')]
for file in ppts:
file.rename(file.with_suffix('.zip'))
zip_files = ppts = [files for files in Path(path).glob('*.zip')]
for zips in zip_files:
with zf.ZipFile(zips,'r') as zip_ref:
zip_ref.extractall(Path(path).joinpath('zipFiles',zips.stem))
然后,我做进一步的过滤,最后得到rels文件夹和ppt / slide文件夹中的xml。
在这里我被卡住了,我可以使用ElementTree
Module读取xml,但是找不到要删除的相关标签?
for file in normal_xmls:
tree = (ET.parse(file).getroot())
y = tree.findall('a')
print(y)
这没有任何效果,我尝试使用python-pptx模块,但.Action.Hyperlink
除非我误解了API,否则它似乎并不是一个完整的功能。
要从形状(单击形状的导航到某处的类型)中删除超链接,请将超链接地址设置为None
:
shape.click_action.hyperlink.address = None
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句