Как изменить цвет шрифта определенных слов в файле .pptx? - PullRequest
0 голосов
/ 13 октября 2019
searchInput = "chapter"
try:
    prs = Presentation("e:/test3/ch7.pptx")
    for slide in prs.slides:
        for shape in slide.shapes:
            if hasattr(shape, "text"):
                shape.text = shape.text.lower()
                for paragraph in shape.text_frame.paragraphs:
                    for run in paragraph.runs:
                        if searchInput in run.text:
                            print(run.text)
                            #run.font.color.rgb = RGBColor(0, 0, 255)


except PermissionError:
    pass
prs.save("e:/test3/ch7_modified1.pptx")

Теперь я могу проверить, содержит ли этот файл "ch7.pptx" определенные слова, которые я хочу найти.

Если я печатаю (run.text), он выводит

chapter 7:  synchronization examples
chapter 7: synchronization examples
end of chapter 7

Итак, я вижу, что есть несколько слов "глава". Но я хочу изменить цвет "главы" на желтый в моем "ch7.pptx", затем я хочу сохранить в "ch7_modified.pptx"

Я продолжаю связываться, чтобы найти, как изменить цвет, ноэто не работает должным образом. Пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 14 октября 2019

Нет гарантии, что данное слово начнется и закончится за один проход;любое данное слово может быть разбито на несколько серий, и его серии могут содержать предшествующий и конечный текст. PowerPoint будет разбивать прогоны там, где пожелает, например, чтобы выделить слово с ошибкой, или просто, если вы сделаете паузу в наборе текста или войдете, чтобы исправить опечатку или что-то в этом роде.

Единственное, что можно точно сказать о пробежке, эточто все содержащиеся в нем символы имеют одинаковое форматирование символов.

Таким образом, чтобы сделать то, что вы хотите, требуется существенно более сложный алгоритм, а некоторые низкоуровневые функции python-pptx пока не имеют.

Общий подход будет выглядеть примерно так:

  • найти абзац, содержащий поисковое слово
  • из этого абзаца, найти последовательность последовательностей, содержащих это слово. Как правило, это последовательность (список), которая может содержать текст до начала и после окончания слова.
  • делит первый из этих циклов на два в начале слова (если только он не начинается на границе четного цикла)
  • разбить последний из этих прогонов на два в конце слова (если только он не заканчивается на четной границе прогона)
  • установить форматирование всех (средних) прогонов, которые содержат все или частьслово с желаемыми настройками

В настоящее время API-интерфейс для бита разделения цикла не поддерживается, и для этого потребуется работа с базовыми объектами XML в python-pptx, что является чем-то вроде расширенной темы. Если вы хотите продолжить, поиск в Google с помощью «функции обхода python-pptx» даст вам возможность начать.

...