webBrowserコントロールを使用してPDFを表示 2009/12/30

Pocket

Visual Studioの標準コントロールを使用してPDFを標準します。

動作は、Internet ExploreやFire FoxなどのウェブブラウザからPDFファイルを開いているイメージになります。

アプリケーションの実装手順は以下のようになります。

1.新しいプロジェクトを作成する。
Windowアプリケーションを選択します。

2.フォームにブラウザコントロールを張り付けます。

WebBrowserコントロールの貼り付け

WebBrowserコントロールの貼り付け

3.ブラウザコントロールにPDFファイルのパスを渡してやります。

ソースコードはこんな感じです。

    public partial class PdfView1 : Form
    {
        private String fileName;
        private int pageNum = 1;

        public PdfView1(String fileName)
        {
            InitializeComponent();

            // 残念ながらAdobe Reader自体の機能を抑止できません。
            //webBrowser1.AllowNavigation = true;
            webBrowser1.AllowWebBrowserDrop = false;
            webBrowser1.IsWebBrowserContextMenuEnabled = false;
            webBrowser1.WebBrowserShortcutsEnabled = false;

            this.fileName = fileName;
            viewPage();
        }

        private void viewPage()
        {
            webBrowser1.Url = new Uri(this.fileName + "#toolbar=0&navpanes=0&view=FitH&scrollbar=1&page=" + this.pageNum);
            webBrowser1.Refresh();
        }

        private void btnPageJump_Click(object sender, EventArgs e)
        {
            // なぜか2回ジャンプを指定しないとページが再読み込みされない。
            try
            {
                this.pageNum = Convert.ToInt32(txtPage.Text);
                viewPage();
            } catch (Exception ex){
                // エラー処理を記述する。
            }
        }
    }

PDFファイルを表示する際にオプションを指定することで、Adobe Readerの表示を制御することができます。

指定したページに移動させようとpageパラメタを指定しても意図したように動作しませんでした。

WebBrowserコントロールの不具合のような気がするのですが、Microsoft社のサイトではそのような記述が見つかりませんでした。

二回実行するとページが切り替わることが解ったので、暫定的な対応をしておきました。

ブラウザで指定するPDF表示用のオプションについては、Adobe社のPDF Open Parametersを参照すると便利です。

 

Trackback URL

Leave a Reply