Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9703

iTextSharpでPDFの綴じ方向を取得する方法

$
0
0

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で確認できる設定です。
image.png
注意点として、

  • ここで「左綴じ」と表示されていても実際には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のものです。


Viewing all articles
Browse latest Browse all 9703

Trending Articles