PDF Tools ホーム > PDF Tools ライト > PDF Viewer-L > C#サンプル > PDFサムネール画像表示

PDF Viewer-L サムネール画像表示のサンプルと解説 C#

「PDFViewer-L」は、PDF文書を表示するためのライブラリです。

PDF Viewer-L Package
機能を制限することでお求め安くしました。PDF Viewer-Lは、ライト(軽量)ではありますがPDFのもつ文書内リンクやWebリンクの情報はイベントを介して取得でき、サムネールやしおり情報もメソッドを介して取得できます。これらの情報を利用して独自のPDF表示アプリケーションを構築できます。

PDF Viewer-L 購入(価格)

C++ による表示サンプルは、こちらです。

無償評価版のダウンロードとインストール

PDF Viewer-Lライブラリは、無償でダウンロードして試用できます。以下のリンクをクリックしてダウンロードしてください。なお、試用に際しては評価用のライセンスキーが必要ですので必ずダウンロードしてください。
評価用ライセンスキーには利用期限がありますが、何度ダウンロードしてもかまいません。

インストール

ダウンロードしたファイルは、適当なフォルダーに解凍します。以下のようなフォルダーができあがりますので、適宜利用します。

binライブラリ
doc使用説明書やライセンス契約書
includeC/C++用のヘッダー(.h)ファイル
samples各種開発言語によるサンプルコード

サンプルの実行前にライブラリ(OCX)を以下の手順に従って登録します。

  1. 「コマンド プロンプト」を管理者権限で起動します。
  2. ファイルを解凍したフォルダー内のbinフォルダーに移動します。
  3. "regsvr32 vwl.ocx"を実行して登録します。成功を示すダイアログが表示されます。
  4. Visual Studioを起動します。
  5. Visual Studioのツールボックス内で、右クリックしてコンテキストメニューの「アイテムの選択(I)...」を選択してツールボックス アイテムの選択ダイアログを表示させます。
  6. 表示したダイアログの「COMコンポーネント」タグをクリックして、コンポーネントの「PdfViewerL Control」をチェックします。これによって、PDF Viewer-Lツールがツールボックスに現れます。

PDFをサムネール画像と共に表示する

サムネール画像は画面に表示して、ユーザーが画像をクリックした場合にそのページを表示するような実装に利用します。サムネール画像については、「PDF構文 サムネール画像」を参照してください。

まず、PDF文書を表示します。あらかじめウィザードなどでフォームを作成し、“PdfViewerL Control”を貼り付けておきます。

フォームクラスのコンストラクタを以下のように変更します。

public ThumbnailForm()
{
    InitializeComponent();
    axPdfViewerL1.InitCtrl("ライセンスキー");
    axPdfViewerL1.Open("PDF Viewer-L.pdf", "", "");
}

このアプリケーションを起動すると、PDF Viewer-Lコントロールを初期化してから、指定のPDFファイルを表示します。使用するメソッドは以下のとおりです。

InitCtrlコントロールを指定のライセンス・キーで初期化します。
引数にライセンスキー文字列を指定します。なおライセンスキーは、こちらからダウンロードしてください。
Open指定のPDFをコントロールに表示します。
以下の引数を指定します。
第一引数表示するPDFのファイルパスを指定します。
第二引数PDFがパスワードで暗号化されている場合にオーナーパスワードを指定します。
暗号化されていない場合は、NULL文字を指定します。
第三引数PDFがパスワードで暗号化されている場合にオーナーパスワードを指定します。
暗号化されていない場合は、NULL文字を指定します。
暗号化されている場合で多くの場合は、オーナーパスワードのみの指定で復号できます。
暗号化されたPDFに正しいパスワードを指定しなかった場合は、エラーになりPDFは表示されません。このような場合は、暗号化したPDFを開くのようにしてください。

サムネール画像の取得と表示

PDF Viewer-Lでは、PDF文書を読み込んでからページごとにサムネール画像を取得します(サムネール画像がPDF文書に埋め込まれていない場合は、画像を取得できません)。

PDF文書の読み込み終了は、OnOpenイベントを捕捉します。サムネール画像は、このイベントハンドラーで取得し適当なコントロールに描画します。
サンプルでは、取得したサムネール画像をピクチャーボックスに描画しますので、あらかじめフォームに貼り付けておきます。

OnOpenのイベントハンドラーおよびピクチャーボックスのPaintハンドラーを以下のように変更します。

//PDF Viewer-Lのオープンイベント
private void axPdfViewerL1_OnOpen(object sender, AxPdfViewerLLib._DPdfViewerLEvents_OnOpenEvent e)
{
    if (e.err != 0)
    {
        MessageBox.Show("PDF文書を開けませんでした。");
        return;
    }

    object a;
    axPdfViewerL1.GetThumbnailData(0, out m_thumbnail.width, out m_thumbnail.height, out a);
        //m_thumbnailは、サムネール画像情報を格納するための構造体
    int len = m_thumbnail.width * m_thumbnail.height * 4;
    m_thumbnail.pix = Marshal.AllocCoTaskMem(len);
    Marshal.Copy((Byte[])a, 0, m_thumbnail.pix, len);

    //サムネール再描画
    thumbPict.Invalidate();
}

//ピクチャーボックスのPaintハンドラー
private void thumbPict_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    Bitmap b = new Bitmap(m_thumbnail.width, m_thumbnail.height, m_thumbnail.width * 4, System.Drawing.Imaging.PixelFormat.Format32bppRgb, m_thumbnail.pix);
    Rectangle t = new Rectangle(thumbPict.ClientRectangle.X, thumbPict.ClientRectangle.Y, m_thumbnail.width, m_thumbnail.height);
    g.DrawImage(b, t);
    g.DrawRectangle(new Pen(Color.FromArgb(128, 128, 128)), t.X, t.Y, t.Width-1, t.Height-1);
    b.Dispose();
}
GetThumbnailData指定ページのサムネール画像の縦横サイズと画像のデータが戻ります。
サムネール画像がない場合は、エラーが戻ります。
引数は、以下を指定します。
第一引数サムネールを取得するページのインデックス番号
第二引数画像の幅を格納する変数のポインター
第三引数画像の高さを格納する変数のポインター
第四引数画像データを格納するVARIANNT型のポインター

サンプルでは、
画像データを8ビット単位でグローバル変数の示す領域にコピーしてから、ピクチャーボックスに描画します。


以下のようなウインドウが表示されます。ウインドウの右上に開いたページのサムネール画像が表示されています。
PDF Viewer-L Thumb Image Sample

サンプル ソースコード

PDF Viewer-Lのサンプル ソースコードは、以下からダウンロードしてください。

   ソースコード: vwlSample_2_3.zip

ご質問、お問い合わせ

メールで support@TrustSS.co.jp 宛てにお送りください。
または、質問のページからお送りいただくようお願いします。ご要望も承っております。