

色々調べてみたのですが、サードパーティのものを使ったりするサンプルはあるのですが、Adobe Reader (Acrobat
Reader)のタイプライブラリを使用するというものは見つけられませんでした。 `AcroPDFLib.AcroPDF`
で出来ないか調べましたが、それらしいメソッドやプロパティが見当たりません。

考えついたのは、 `gotoNextPage()`
メソッドを例外が発生するまで繰り返す・・・という方法でページ数が得られなくはなさそうに感じますが、なんか美しくありません。試したわけではありませんがそもそも処理的に遅そうな気がします
(^_^;

一応、今求められているのは、複数の PDF の全ページ数を合算し、その **ページ数がユーザが設定した値より大きければ警告すればよい** ので、たとえば
10 ページと設定されていれば PDF、 10 ファイル以上であればページ数は確認すら要りませんし、それ以下でも最高 10
ページ目までページ移動できた時点で確認メッセージを出せると言えば出せそうです。

諦めるしかないでしょうか？ 御存知の方、教えてください。

参考にした情報は以下のものの他、「C# PDF ページ数取得」等で検索して見つかった物を調べました。

  * [AcroPDFLib.AxAcroPDF 一覧](http://pdf-file.nnn2.com/?p=240)
  * [[VB / C#] PDF ファイルをフォーム上に表示する](http://atamoco.boy.jp/vbcs/windows.app/adobe-pdf/display.php)

* * *

追記です。

`AcroPDFLib.AcroPDF` は画面コントロールだとおもいます。 PDF に関しては、サムネイル情報 (これは別の方法で取得しようとしています)
以外は、総ページ数だけ取得できれば構わないため、画面コントロールである必要はありません。寧ろ画面コントロールでないほうが良いです。

[code]

    xxxPDF pdf = new xxxPDF();
    pdf.LoadFromStream(stream);
    int pageNum = pdf.GetPageCount();
    size.width = pdf.GetPDFInfo().PaperSize.width;
    size.height = pdf.GetPDFInfo().PaperSize.height;
    
[/code]

こんな感じの方法で PDF 情報が取れれば有り難いんですが^^


CC BY-SA 3.0
2015-02-04T16:35:30.420
5955
2022-01-06T06:10:40.840
2015-02-04T18:34:51.297
4978
7966
question
c# pdf
C# で PDF ファイルの総ページ数を取得することって出来ないでしょうか？


本家SOに[同様な質問](https://stackoverflow.com/questions/10948022/how-can-i-get-
number-of-pages-in-a-pdf-file-in-axacropdf)があるようです。

> According to the API Reference there's a function called GetNumPages:
>
> GetNumPages(); Returns The number of pages in a file, or -1 if the number of  
>  pages cannot be determined.


CC BY-SA 3.0
2015-02-04T17:26:36.040
5956
2015-02-04T17:26:36.040
2020-06-17T08:14:45.997
-1
3277
5955
answer


C#用のコンポーネント、Spire.PDF for
.NETを使用して、PDFに対するあらゆる操作がサポートしています。無料版のダウンロード先は[こちら](https://www.e-iceblue.com/Download/download-
pdf-for-net-free.html)です。参照に追加完了したら、以下のコードを使用すると、PDFのページ数が分かるようになります：

[code]

    using Spire.Pdf;
    using System;
    
    namespace GetNumberOfPages
    {
        class Program
        {
            static void Main(string[] args)
            {
                //PDFDocumentのインスタンスを作成してファイルをロードする
                PdfDocument document = new PdfDocument();
                string FileName = "sample.pdf";
                document.LoadFromFile(FileName);
    
                //ページ数を取得する
                int PageNumber = document.Pages.Count;
                Console.WriteLine("Page count: {0}", PageNumber);
    
                //ドキュメントの1ページを削除する
                document.Pages.RemoveAt(1);
    
                //ページの数字を取得する
                PageNumber = document.Pages.Count;
                Console.WriteLine("Second page count:{0}", PageNumber);
                Console.ReadLine();
    
                //ドキュメントを閉じる
                document.Close();
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2022-01-06T06:10:40.840
85513
2022-01-06T06:10:40.840
48858
5955
answer