Извличане на част от docx в нов docx

Имам docx файл само с текст. Бих искал да създам нов docx файл, съдържащ само част от страница в оригиналния docx. Използвам python-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')

Въпреки че копирам цялата информация за стила, изглежда, че пропускам нещо, тъй като на изхода липсва част от форматирането.


person XAnguera    schedule 16.07.2015    source източник
comment
Какво форматиране? Бихте ли публикували екранни снимки, показващи оригиналния параграф и копирания параграф? --- Не съм използвал python-docx, но мога да кажа, че като цяло, ако не копирате и информацията за стиловете и форматирането на секциите, може да не копирате абзаца точно.   -  person cxw    schedule 16.07.2015


Отговори (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

person scanny    schedule 16.07.2015