Удаление гиперссылок в PowerPoint с помощью python -pptx - PullRequest
1 голос
/ 21 января 2020

Совершенно новый для 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))

Затем я выполняю дальнейшую фильтрацию и получаю xmls из папки rels и папки ppt / slide.

я застрял здесь, я могу прочитать xml с помощью модуля ElementTree, но не могу найти соответствующий тег для удаления?

for file in normal_xmls:
    tree = (ET.parse(file).getroot())
    y = tree.findall('a')
    print(y)

это ничего не дает, я пытался использовать модуль python -pptx, но .Action.Hyperlink не кажется полной функцией, если я не понимаю API.

1 Ответ

1 голос
/ 22 января 2020

Чтобы удалить гиперссылку из фигуры (вид, где нажатие на фигуру перемещается куда-то), установите адрес гиперссылки на None:

shape.click_action.hyperlink.address = None
...