Писме на DOCX файлове с LdmDocxWriter

Писме на DOCX файлове с LdmDocxWriter

Писме на DOCX файлове с LdmDocxWriter

LdmDocxWriter превръща A в C. light_document_model.Document (LDM) обект в Това е еквивалент на файла DOCX. DocumentReader, който чете DOCX файлове И заедно те образуват тръбопровод за връщане и обратно: DocumentReader в, LdmDocxWriter Излезте.


Предварителни условия

ИзискванеДетайли
Python3.9 or later
Пакетътaspose-words-foss (лицензиран от MIT)
Вход на данниA. Също така: 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 Предмет. Използвайте го, когато трябва да изпратите файла през мрежата, съхранявате го в база данни или Избягвайте изцяло записването в файловата система.

from aspose.words_foss import DocumentReader, LdmDocxWriter

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)

Модел за пътуване и връщане

Най-често срещаният случай на употреба е пътуване от четене до изменение и запис:

from aspose.words_foss import DocumentReader, LdmDocxWriter

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")

Предупреждения с загубен текст

Кога? LdmDocxWriter не може да представи вярно LDM конструкция във формат DOCX; Излъчва A. DocxWriterLossyWarning.Можете да ги заснемете с питонските. 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() в уеб-разработвачи, за да се избегне временното управление на файлове.
  • Проверка. DocxWriterLossyWarning в изпитвания за откриване на регресии по пътуване и обратно, когато: Усъвършенстваме библиотеката.
  • LdmDocxWriter.options е налична за конфигурация на ниво писател; проверете обект след инстанция, за да видите наличните настройки.

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

ИзданиеПричина за товаРемонтиране
FileNotFoundError на 1 януари write()Роден каталог не съществува.Създаване на изходната директория с: Path.mkdir(parents=True, exist_ok=True) преди да се обадиш. write()
DocxWriterLossyWarning излъчванеLDM конструкция, която не може да бъде представена в DOCXПрегледайте предупредителното съобщение; приемете загубата или коригирайте LDM преди да напишете.
Празно изход DOCXLDM документът няма раздели или параграфиПроверка на данни ldm_doc.sections и в) ldm_doc.all_paragraphs са непустени след натоварване;

FAQ

Какво е LDM (light_document_model)?

LDM е абстрактното, Python-родно представяне на документ от Word. Той отделя логиката на документа от двоичния формат DOCX и улеснява инспектирането и манипулирането на структурата на документите по програма.

Мога ли да пиша на PDF вместо DOCX?

Да употреба LdmPdfWriter.write(doc, output_path) от същия пакет за PDF изход, или LdmMarkdownWriter.write(doc, output_path) за Маркъдън.

- Да, нали? write_to_bytes() изисква изход?

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

Снимка на API референтна информация

Клас / методОписание на състоянието
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

Вижте също:

 Български