[英]Removing hyperlinks in PowerPoint with python-pptx
對 XML 和 python-pptx 模塊非常陌生我想刪除每個頁面上存在的單個超鏈接
到目前為止,我自己的嘗試是檢索我的文件,更改為zip
格式並將它們解壓縮到單獨的文件夾中
然后我找到以下屬性<a:hlinkClick r:id="RelId4">
並刪除它,同時刪除與此幻燈片對應的xml.rels
文件中的Relationship
屬性。
然后我重新壓縮並將擴展名更改為 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 文件夾的 xmls。
正是在這里我卡住了我可以使用ElementTree
模塊讀取我的 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.