5591


Microsoft Word の docx 形式ファイルにおいて、指定したテキスト要素が何ページに表示されるのか、取得したいと考えています。

Apache POI または XML を直接操作した場合どうやって取得したらよいでしょうか。

そもそも不可能なのでしょうか。


CC BY-SA 3.0
2015-01-28T02:44:56.780
5479
2015-01-30T00:52:29.100
2015-01-28T12:52:09.810
4978
2298
question
java apache-poi docx ms-word
MS-Word 文章 (.docx) 中、指定テキストが何ページ目にあるか調べたい


document.xmlのページサイズ（w:pgSz）の高さからマージン（w:pgMar）のtop/bottom/header/footerを引いたものを変数で用意して、各パラグラフ（w:p）をドキュメントグリッド（w:docGrid）のlinePitchで乗算し、最初に用意した変数を超えたら改ページとするくらいしか浮かびませんね・・・。

例外として、各パラグラフの中にw:lastRenderedPageBreakもしくはw:brのw:type=pageがあればその場で改ページという条件が必要ですけれど。

ECMA-376でもページに関する記載は無いため、自力で上記のようにコンテンツ描画をエミュレートするしかなさそうです。

ただ注意してほしいのは、MS
Officeは完全にECMA-376準拠というわけではないので、あらゆる例外が発生すると頭の片隅に残しておいてください。（私はExcelで泣きました・・・）


CC BY-SA 3.0
2015-01-30T00:52:29.100
5591
2015-01-30T00:52:29.100
3709
5479
answer