Написання файлів DOCX з LdmDocxWriter
Написання файлів DOCX з LdmDocxWriter
LdmDocxWriter перетворює а light_document_model.Document (LDM) об’єкт в DOCX файл. Це контрагент написання до DocumentReader, що читає файли DOCX Вони формують повний маршрут: DocumentReader в, LdmDocxWriter Вийди.
Prerequisites
| Requirement | Detail |
|---|---|
| Python | 3.9 or later |
| Package | aspose-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’s. 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доступна для конфігурації на рівні запису; перевірити об’єкт після інстанціації, щоб побачити доступні налаштування.
Загальні питання
| Issue | Cause | Виправлення |
|---|---|---|
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 |