Писме на DOCX файлове с LdmDocxWriter
Писме на DOCX файлове с LdmDocxWriter
LdmDocxWriter превръща A в C. light_document_model.Document (LDM) обект в Това е еквивалент на файла DOCX. DocumentReader, който чете DOCX файлове И заедно те образуват тръбопровод за връщане и обратно: DocumentReader в, LdmDocxWriter Излезте.
Предварителни условия
| Изискване | Детайли |
|---|---|
| Python | 3.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 преди да напишете. |
| Празно изход DOCX | LDM документът няма раздели или параграфи | Проверка на данни 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 документа и връща abytesобект без взаимодействие с файловата система.
Снимка на 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 |