簡體   English   中英

使用 python-pptx 刪除 PowerPoint 中的超鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM