2015-07-16 7 views
0

У меня есть файл docx с текстом. Я хотел бы создать новый файл docx, содержащий только часть страницы в исходном docx. Для этого я использую python-docx. До сих пор я был в состоянии пробежать оригинальный DOCX документ и скопировать каждый нужный пункт/запустить в оригинале в новый документ следующим образом (этот пример должен сделать точную копию, я считаю):Извлеките часть docx в новый docx

Doc = docx.Document('/tmp/input.docx') 
OutDoc = docx.Document() 

for para in Doc.paragraphs: 
    currentParagraph = OutDoc.add_paragraph(style=para.style) 
    for run in para.runs: 
     currentParagraph.add_run(run.text, style=run.style) 
OutDoc.save('/tmp/output.docx') 

Даже хотя я копирую всю информацию о стиле, кажется, что чего-то не хватает, поскольку на выходе не хватает некоторых форматов.

+0

Что форматирования? Не могли бы вы опубликовать скриншоты с оригинальным абзацем и скопированным абзацем? --- Я не использовал python-docx, но могу сказать, что в общем случае, если вы не копируете также стили и информацию о форматировании раздела, вы не можете точно реплицировать абзац. – cxw

ответ

1

В Word имя стиля, применяемое к абзацу или запуску (или любому другому контенту), игнорируется, если этот стиль явно не определен в новом документе.

Вы можете либо разобрать стили в исходном документе, либо воссоздать каждый из них в новом документе, либо создать пустой «шаблонный» документ для нового документа, который уже содержит стили, которые вы хотите.

Шаблон документа python-docx по умолчанию содержит многие встроенные стили, но если ваш документ использует любые настроенные стили, это объясняет тот симптом, который вы видите.

См эти страницы в документации более: http://python-docx.readthedocs.org/en/latest/user/styles-understanding.html http://python-docx.readthedocs.org/en/latest/user/styles-using.html http://python-docx.readthedocs.org/en/latest/api/document.html#docx.document.Document.styles http://python-docx.readthedocs.org/en/latest/api/style.html