Я использовал Apache POI для управления Microsoft Word. docx - т.е. откройте документ, который изначально был создан в Microsoft Word, измените его, сохраните в новом документе.
Я заметил, что в новых абзацах, созданных Apache POI, отсутствует идентификатор сохранения редакции , часто известный как RSID или rsidR . Это используется Word для идентификации изменений, внесенных в документ за один сеанс, например, между сохранениями. Это необязательно - пользователи могут выключить его в Microsoft Word, если захотят, - но на самом деле он есть почти у всех, поэтому почти каждый документ полон RSID. Прочтите это отличное объяснение RSID , чтобы узнать больше об этом.
В документе Microsoft Word word / document.xml
содержит такие абзацы:
Paragraph of text here.
Однако тот же абзац создан по POI будет выглядеть так в word / document.xml
:
Paragraph of text here.
I ' Я понял, что могу заставить POI добавлять RSID к каждому абзацу, используя такой код:
byte[] rsid = ???;
XWPFParagraph paragraph = document.createParagraph();
paragraph.getCTP().setRsidR(rsid);
paragraph.getCTP().setRsidRDefault(rsid);
Однако я не знаю, как мне следует генерировать RSID.
Есть ли у POI способ или генерировать и / или отслеживать RSID? Если нет, могу ли я гарантировать, что генерируемый мной RSID не конфликтует с тем, который уже указан в документе?