Visual Studioの標準コントロールを使用してPDFを標準します。
動作は、Internet ExploreやFire FoxなどのウェブブラウザからPDFファイルを開いているイメージになります。
アプリケーションの実装手順は以下のようになります。
1.新しいプロジェクトを作成する。
Windowアプリケーションを選択します。
2.フォームにブラウザコントロールを張り付けます。
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を参照すると便利です。