Raman_patil Ответов: 0

Как скопировать содержимое одного docx в другой docx в определенной позиции


Я хотел скопировать содержимое одного docx/документа в другой docx/документ в определенной позиции.

Примечание: контент может содержать текстовые данные с цветом фона, таблицы, smartart и изображения.

Что я уже пробовал:

def add_para_data(output_doc_name, paragraph):
    """
    Write the run to the new file and then set its font, bold, alignment, color etc. data.
    """
    output_para = output_doc_name.add_paragraph()
    for run in paragraph.runs:
        # output_run = output_para.add_run(run.text)
        output_run = output_para.add_run()

        # Run's bold data
        output_run.bold = run.bold
        # Run's italic data
        output_run.italic = run.italic
        # Run's underline data
        output_run.underline = run.underline
        # Run's color data
        output_run.font.color.rgb = run.font.color.rgb
        # Run's font data
        output_run.font.name = run.font.name
        output_run.font.highlight_color = run.font.highlight_color
        output_run.font.size = run.font.size
        # output_run.style.name = run.style.name
        output_run.style = run.style



    # Paragraph's alignment data
    output_para.style = paragraph.style
    output_para.alignment = paragraph.alignment
    output_para.paragraph_format.alignment = paragraph.paragraph_format.alignment
    output_para.paragraph_format.widow_control = paragraph.paragraph_format.widow_control

Richard MacCutchan

И в чем же вопрос?

Raman_patil

Как скопировать абзац docx в другой docx и сохранить все стили

Richard MacCutchan

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

Raman_patil

Я просмотрел документацию python-docx.
Он читает только содержимое и не идентифицирует изображения и таблицы внутри абзаца между текстовыми данными. Python-docx будет идентифицировать все изображения и таблицы, присутствующие во всем документе, не особенно с абзацем.

Я использовал еще несколько модулей, пожалуйста, ознакомьтесь с наблюдениями ниже:
1. Python-docx:
• Возможность считывания текстовых данных путем итерации по абзацу, однако абзац не будет обнаруживать таблицу и изображения в ней
• Мы должны использовать объект document, который будет обнаруживать все таблицы и изображения, присутствующие во всем документе

2. Тика:
• Tika считывает как текстовые данные, так и метаданные(например, изображения) в отдельной переменной
• Тика читает весь контент в одной строке, так что перебирать его будет невозможно

3. Win32:
• Невозможно прочитать данные в форматах

4. Конвертации docx в XML:
• Пули не копировались вместе с содержимым
• Изображение будет присутствовать в другом каталоге, который должен быть скопирован отдельно в выходной файл, даже если мы сможем получить путь к изображению, мы не сможем добавить его в определенную позицию в выходном файле docx

5. преобразование docx в HTML:
• Невозможно скопировать маркерную точку
• Изображение хранится в html-странице с кодировкой Base64, которая не будет храниться в каталоге
• Base64 в основном используется для представления данных в строковом формате ASCII

6. Байтезио:
• Возможность чтения и записи полных данных, однако эти данные не будут повторяться строка за строкой, пожалуйста, ознакомьтесь с документацией

7. Мамонт:
• Похоже на синтаксический анализ HTML

8. Pydocx:
• Похоже на синтаксический анализ HTML

Richard MacCutchan

Похоже, вам придется найти какой-то другой способ их чтения. Если вы знаете C#, вы можете использовать предоставленные Microsoft библиотеки взаимодействия.

Raman_patil

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

Модуль Tika способен читать весь контент, но весь docx приходит в одной строке, поэтому я не могу перебирать раздел, а также не могу редактировать(копировать-вставлять содержимое) выходной файл docx.

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

Попробовал распаковать word в XML, но XML содержит изображения в отдельной папке. Кроме того, код не будет идентифицировать пули

Я ожидал, что в выходном файле все разделы будут заменены скопированным содержимым входного раздела(изображения, таблицы, смарт-арт и форматы)

Выходной файл содержит только текстовые данные.

0 Ответов