Word для Mac не создает ожидаемый WordML

Я пишу парсер для WordML. Просматривая спецификацию, которую я прочитал что способ подсчета количества страниц в документе состоит в том, чтобы прочитать элемент Pages в DocumentProperties. Если я правильно прочитал спецификацию, DocumentProperties всегда должен быть там.

При создании тестового документа на моем Mac я заметил, что в сгенерированном xml нет элементов Pages или DocumentProperties. У меня есть w:document, а внутри него w:body с содержимым.

Является ли DocumentProperties обязательным или это особенность Mac?


person ruipacheco    schedule 27.08.2014    source источник


Ответы (1)


Существует два разных формата Word XML — старый формат Word 2003 XML и формат Office Open XML, который можно сохранить либо как .docx, где он сохраняется как набор XML и, возможно, других типов файлов в .zip. контейнер и формат "Flat OPC", который представляет собой XML-представление одного и того же объекта в одном файле.

Каждый формат хранит свойства в другом месте.

Если вы видите элемент с именем w:document, то на самом деле вы сохраняете в формате OOXML. В этом формате «встроенные» свойства сохраняются как минимум в двух «частях». Обычно вы найдете элемент внутри элемента в pkg:part с именем /docProps/app.xml.

Есть как минимум три сложности:

  1. количество страниц на самом деле является последним количеством страниц, сохраненным Word (при условии, что Word сохранил файл). Это верно только для определенного размера бумаги, драйвера принтера и т. д.
  2. Я не думаю, что этот элемент является обязательным в любом из двух представлений XML, которые я упомянул. Хотя не уверен. Но, насколько я знаю, Word всегда его сохранит.
  3. В общем случае вы не можете предположить, что эта часть свойств на самом деле будет называться /docProps/app.xml. На практике Word всегда должен сохранять его под этим именем. Но теоретически вы должны искать либо Элемент с определенным URI, либо следить за связью с определенным типом. Я забыл детали в этом случае.
person Community    schedule 27.08.2014
comment
Вы имеете в виду Office Open XML? Потому что иначе это совсем другая банка червей. - person ruipacheco; 27.08.2014