iTextSharpでPDFの綴じ方向を取得するには、ViewerPreferencesを取得します。
Java版のiTextも似たようなものだと思います。
usingiTextSharp.text.pdf;varpr=newPdfReader(stream);varvp=iTextSharp.text.pdf.intern.PdfViewerPreferencesImp.GetViewerPreferences(pr.Catalog).GetViewerPreferences();this.Direction=Directions.Default;if(vp.Contains(PdfName.DIRECTION)){varname=vp.GetAsName(PdfName.DIRECTION);if(name==PdfName.R2L){this.Direction=Directions.R2L;}elseif(name==PdfName.L2R){this.Direction=Directions.L2R;}}pr.Close();(参考元:http://itext.2136553.n4.nabble.com/Using-getSimpleViewerPreferences-td2167775.html)
なんだこれ…。
綴じ方向とは、Adobe ReaderのCtrl+Dで確認できる設定です。
注意点として、
- ここで「左綴じ」と表示されていても実際にはDirectionが設定されていない場合がある
- 実際には右綴じなのに「左綴じ」と表示されるファイルが結構ある。
一方で右綴じしたいならこんな感じです。
usingiTextSharp.text.pdf;varorg=newPdfReader(file);using(varoutfile=newSystem.IO.FileStream(TemporaryFile,System.IO.FileMode.CreateNew)){varst=newPdfStamper(org,outfile);st.AddViewerPreference(PdfName.DIRECTION,R2L?PdfName.R2L:PdfName.L2R);st.Close();}org.Close();(参考元:https://kiwanami.hatenadiary.org/entry/20101215/1292400269)
Viewer Preferencesに関してはこの辺りが参考になりそうです。
とりあえず綴じ方向以外はあまり有用そうには見えませんね。
ちなみに使っているのはLGPL版の4.1.6です。
AGPLに移行後の最新版は知りませんが、非ジェネリック版のCollectionを使っていたりAPIが直感的じゃなかったりで使いづらいですね。
上のとか、PdfReader.ViewerPreferencesにgetアクセサ追加とかが順当ですよね。
実際のPdfReader.ViewerPreferencesはsetアクセサしかない上、int型です。
まぁJava由来ですからね。PDFの仕様自体が難解ですし。
ソースコードは開発中のBookViewer後継アプリBookViewerApp3のものです。