Написание файлов DOCX с помощью LdmDocxWriter

Написание файлов DOCX с помощью LdmDocxWriter

Написание файлов DOCX с помощью LdmDocxWriter

LdmDocxWriter преобразует а light_document_model.Document (LDM) объекта в Это файл DOCX. Он является аналогом записи для DocumentReader, который читает файлы DOCX . Вместе они образуют круговоротную трубопроводку: DocumentReader в, LdmDocxWriter - Выходи.


Prerequisites

RequirementDetail
Python3.9 or later
Packageaspose-words-foss (лицензировано MIT)
InputА. - Да . light_document_model.Document примерно
pip install aspose-words-foss

Написать на путь файла

LdmDocxWriter.write(doc, output_path) Сериализирует документ LDM в DOCX. Если родительский каталог пути не существует, вызов поднимется. FileNotFoundError.

from aspose.words_foss import DocumentReader, LdmDocxWriter

# Load a DOCX and obtain its LDM representation
reader = DocumentReader()
reader.load_file("input/original.docx")
ldm_doc = reader.to_light_document()

# Write the LDM document back to a DOCX file
writer = LdmDocxWriter()
writer.write(ldm_doc, "output/result.docx")
print("Written to output/result.docx")

Написать в байты (выход из памяти)

LdmDocxWriter.write_to_bytes(doc) возвращает содержание DOCX как bytes Объект. Используйте это, когда вам нужно отправить файл через сеть, хранить его в базе данных или избегать записи в файловую систему полностью.

reader = DocumentReader() reader.load_file(“input/report.docx”) ldm_doc = reader.to_light_document()

writer = LdmDocxWriter() docx_bytes = writer.write_to_bytes(ldm_doc) print(f"DOCX bytes: {len(docx_bytes)}")

Save manually if desired

with open(“output/report_copy.docx”, “wb”) as f: f.write(docx_bytes)


---

### Поездка в оборот

Наиболее распространенным случаем использования является поездка с чтением-изменением и записью:

reader = DocumentReader()
reader.load_file("input/template.docx")
ldm_doc = reader.to_light_document()

# Inspect or modify the LDM here
print("Sections:", len(ldm_doc.sections))
print("Paragraphs:", len(ldm_doc.all_paragraphs))

writer = LdmDocxWriter()
writer.write(ldm_doc, "output/modified.docx")

Предупреждения в виде “потерянного письма”

When LdmDocxWriter не может верно представлять конструкцию LDM в формате DOCX. он излучает … DocxWriterLossyWarning.Вы можете захватить их с помощью Python. warnings модуль для проверки того, что было отброшено:

import warnings
from aspose.words_foss import DocumentReader, LdmDocxWriter, DocxWriterLossyWarning

reader = DocumentReader()
reader.load_file("input/complex.docx")
ldm_doc = reader.to_light_document()

writer = LdmDocxWriter()
with warnings.catch_warnings(record=True) as w:
    warnings.simplefilter("always", DocxWriterLossyWarning)
    writer.write(ldm_doc, "output/complex_out.docx")

for warning in w:
    print("Lossy:", warning.message)

Советы и лучшие практики

  • Всегда звони . DocumentReader.to_light_document() до передачи документа в LdmDocxWriter автор ожидает LDM. Document, не сырой . DocumentReader.
  • Использование: write_to_bytes() в веб-услугах для избежания временного управления файлами.
  • Check DocxWriterLossyWarning в испытаниях для обнаружения обратной регрессии, когда: - Я обновляю библиотеку.
  • LdmDocxWriter.options доступна для конфигурации на уровне писателя; проверьте объект после инстанции, чтобы увидеть доступные настройки.

Общие проблемы

IssueCauseУстранить
FileNotFoundError в день: write()Основной каталог не существует .Создать выходной каталог с помощью: Path.mkdir(parents=True, exist_ok=True) перед звонком . write()
DocxWriterLossyWarning выделенныеКонструкция LDM не представлена в DOCX.Просмотреть предупреждение; принять потерю или скорректировать LDM перед написанием.
Пустой выход DOCXДокумент LDM не содержит разделов или пунктов.Verify ldm_doc.sections и в том числе: ldm_doc.all_paragraphs не пусты после загрузки;

FAQ

Что такое LDM (light_document_model)?

LDM - это абстрактное представление документа Word на языке Python, которое используется в Aspose.Words FOSS. Он разъединяет логику документов от двоичного формата DOCX и облегчает программистское осмотр и манипулирование структурой документов.

Могу я писать на PDF вместо DOCX?

Да использование LdmPdfWriter.write(doc, output_path) из одного пакета для PDF-файлов. выпуск; или LdmMarkdownWriter.write(doc, output_path) для Маркадаун.

Does write_to_bytes() требуется выходный путь?

  • Нет, не могу. write_to_bytes(doc) принимает только документ LDM и возвращает bytes объект без взаимодействия файловой системы.

Справочное резюме API

Класс / методDescription
LdmDocxWriterПреобразует LDM. Document в файл DOCX
LdmDocxWriter.write(doc, output_path)Написывает DOCX на указанный путь файла .
LdmDocxWriter.write_to_bytes(doc)Возвращает содержание DOCX как: bytes
LdmDocxWriter.optionsОпции конфигурации писателя
DocxWriterLossyWarningПредупреждение, возникающее при выходе конструкции LDM во время записи.
DocumentReaderЧитает файл DOCX и создаёт LDM-представление.
DocumentReader.to_light_document()Возвращает загруженный документ в виде LDM. Document

See Also

 Русский