Как изменить нумерацию страниц в WordProcessingDocument? - PullRequest
2 голосов
/ 24 марта 2020

Я создал большой (~ 1000 страниц) документ Word, используя open xml -sdk. Когда я открываю его в первый раз, используя приложение word, в строке состояния отображается «Word перенумеровывает страницы test.docx» и делает это примерно 15 секунд. Я сделал немецкий скриншот этого поведения. После этого шага документ изменяется и его необходимо сохранить. Новая версия файла примерно в два раза больше оригинальной.

Документ сохраняется в первый раз, просто вызывая

document.SaveAs("someFilePath");

Что именно такое поведение? Как я могу изменить нумерацию страниц при (или после) создании документа программно ?

1 Ответ

2 голосов
/ 24 марта 2020

Вы не можете перенумеровать страницы в WordprocessingDocument, потому что эти номера страниц не сохраняются в WordprocessingDocument, а скорее создаются во время размещения или рендеринга документа.

Типовой документ определяет номера страниц в виде сложного поля, которое вы найдете в разметке Open XML, содержащейся в FooterPart (или, возможно, HeaderPart). Предполагая, что поле номера страницы хранится в FooterPart, у вас может быть один FooterPart в вашем WordprocessingDocument в простейшем случае (например, документ с одним разделом). Даже если у вас несколько FooterPart с, например, из-за того, что у вас есть несколько разделов или у вас разный макет для первой, нечетной и четной страниц, у вас в документе относительно мало FooterPart (по крайней мере по сравнению с вашим 1.000 страниц).

Когда Word отображает документ для печати или просмотра, он также отображает номера страниц на основе ваших FooterPart s (все еще используя мой пример). Для 1000 страниц это занимает время, так как Word просто не создан для документов такого большого размера.

Если вы хотите выполнить работу Word и выполнить макет самостоятельно, вам необходимо понять, что создание механизма компоновки чрезвычайно сложно и требует больших усилий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...