C# で PDF ファイルの総ページ数を取得することって出来ないでしょうか?
色々調べてみたのですが、サードパーティのものを使ったりするサンプルはあるのですが、Adobe Reader (Acrobat Reader)のタイプライブラリを使用するというものは見つけられませんでした。 AcroPDFLib.AcroPDF
で出来ないか調べましたが、それらしいメソッドやプロパティが見当たりません。
考えついたのは、 gotoNextPage()
メソッドを例外が発生するまで繰り返す・・・という方法でページ数が得られなくはなさそうに感じますが、なんか美しくありません。試したわけではありませんがそもそも処理的に遅そうな気がします (^_^;
一応、今求められているのは、複数の PDF の全ページ数を合算し、そのページ数がユーザが設定した値より大きければ警告すればよいので、たとえば 10 ページと設定されていれば PDF、 10 ファイル以上であればページ数は確認すら要りませんし、それ以下でも最高 10 ページ目までページ移動できた時点で確認メッセージを出せると言えば出せそうです。
諦めるしかないでしょうか? 御存知の方、教えてください。
参考にした情報は以下のものの他、「C# PDF ページ数取得」等で検索して見つかった物を調べました。
追記です。
AcroPDFLib.AcroPDF
は画面コントロールだとおもいます。 PDF に関しては、サムネイル情報 (これは別の方法で取得しようとしています) 以外は、総ページ数だけ取得できれば構わないため、画面コントロールである必要はありません。寧ろ画面コントロールでないほうが良いです。
xxxPDF pdf = new xxxPDF();
pdf.LoadFromStream(stream);
int pageNum = pdf.GetPageCount();
size.width = pdf.GetPDFInfo().PaperSize.width;
size.height = pdf.GetPDFInfo().PaperSize.height;
こんな感じの方法で PDF 情報が取れれば有り難いんですが^^