Как записать отдельные файлы DOCX по странице из одного файла DOCX? - PullRequest
0 голосов
/ 30 января 2020

У меня есть документ MS Word, который состоит из нескольких сотен страниц.

Каждая страница идентична, кроме имени человека, которое уникально на каждой странице. (Одна страница - один пользователь).

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

Я использовал модуль python-docx, найденный здесь: https://python-docx.readthedocs.io/en/latest/

Я Изо всех сил пытаясь решить эту задачу.

Насколько я исследовал, невозможно l oop на каждой странице, поскольку страницы не определяются в самом файле .docx, а генерируются программой. Microsoft Word.

Однако python -docx может интерпретировать текст, и поскольку каждая страница одинакова, я не могу сказать python, когда вы видите этот текст (последний фрагмент текста в данном страница) считают, что это конец страницы, и все, что после этого пункта, является новой страницей.

В идеале, если бы я мог написать все oop, что бы рассмотреть эту точку и создать документ до До этого момента и повторяя все страницы, это было бы здорово. Нужно было бы также взять все форматирование / изображения.

Я не против других методов, таких как сначала преобразование в PDF, если это возможно.

Есть мысли?

1 Ответ

0 голосов
/ 22 февраля 2020

У меня была точно такая же проблема. К сожалению, я не смог найти способ разделить .docx по страницам. Решение состояло в том, чтобы сначала использовать python -docx или docx2 python (что угодно) для перебора каждой страницы, извлечения уникальной (персональной) информации и помещения ее в список, чтобы вы получили:

people = ['person_A', 'person_B', 'person_C', ....]

Затем сохраните файл .docx в формате pdf, разделите PDF-файлы по страницам, а затем сохраните их как person_A.pdf et c следующим образом:

from PyPDF2 import PdfFileWriter, PdfFileReader

inputpdf = PdfFileReader(open("document.pdf", "rb"))

for i in range(inputpdf.numPages):
    output = PdfFileWriter()
    output.addPage(inputpdf.getPage(i))
    with open(f"{people[i]}.pdf", "wb") as outputStream:
        output.write(outputStream)

В результате получается куча страницы PDF, сохраненные как Person_A.pdf, Person_B.pdf et c. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...