Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2017年03月09日] [更新 2017年03月09日] Delphi サンプルプログラム集
718_Adobe Reader を起動して PDF 文書を表示
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro
Adobe Acrobat Reader DC バージョン 2015.023.20070
718_ExecuteAbobeReader.zip [2,257 KB] 2017年03月09日版 (EXE 同梱,PDFMaker同梱)







01_ShellExecute 関数で Adobe Reader を起動して PDF 文書を表示


ShellExecute 関数を使用して PDF 文書を表示するサンプルです.基本的に以下のリンクのページのサンプルと違いはありませんが,起動時のパラメータの設定例として別記事にしてみました.

ShellExecute 関数は,拡張子の関連付けでアプリを起動して,そのアプリで文書を表示できます.多くの場合,PDF 文書は Adobe Acrobat あるいは Adobe Reader に関連付けされています.したがって,第 3 引数に PDF 文書のフルパスを指定すれば,その文書を表示することができます.
しかし,この方法では起動するアプリに対する起動オプションは指定できません.



procedure TForm1.Button1Click(Sender: TObject);
var
  LPDFFilePath : string;
begin
  LPDFFilePath := AnsiQuotedStr(ExpandFileName('..\PDF文書.pdf'), '"');

  ShellExecute(Handle, '', PChar(LPDFFilePath), nil, nil, SW_SHOW);
end;


起動するアプリケーションに対して起動オプションあるいは起動時のパラメータを指定するには,以下のように,ShellExecute 関数の第 3 引数に起動するアプリの実行ファイル名を指定します.そして,第 4 引数に起動時のパラメータを設定します.
Adobe Acrobat および Adobe Reader のコマンドラインオプションについては,Adobe のサイトの記事で確認してください.



[備考 1]
本サンプルは,作成した EXE を Windows XP(SP4) + Adobe Reader 9.0.0 の環境でも実行して動作を確認しています.また,プロジェクトは Delphi 6, 7, 2007-R2, XE, X5, XE7 の Pro 版,および Delphi 10.1 Berlin Starter でもコンパイルして動作することを確認しています.


[備考 2]
PDF 文書も,ワードの文書やエクセルのブックのように,COM (OLE) オブジェクトとしての操作が可能です.ただし,開発環境にも実行環境にも,Adobe Acrobat が必要です.



図1
実行画面
  • ボタンクリックで添付の PDF 文書を表示
  • 最初は 20 ページ目を表示
  • 100 % のサイズで表示
  • ツールバーは非表示

リスト1
ShellExecute 関数で Adobe Reader を起動して PDF 文書を表示
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin;

type
  TForm1 = class(TForm)
    Button1: TButton;
    SpinEdit1: TSpinEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

uses
  ShellAPI;

{$R *.dfm}

//=============================================================================
//  フォーム生成時の処理
//  PDF文書を表示した時に最初に表示するページを指定
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
  SpinEdit1.Value := 20;
end;

//=============================================================================
//  Adobe Acrobat Readerを起動してPDF文書を表示
//  ShellExecute関数を使用する例
//  Readerの起動オプションの/AはPDF文書ファイル名の指定より前でないと無効
//
//  このコードでは以下の指定をしている
//    最初に表示するページを指定
//    表示サイズは100%
//    ツールバーは表示しない
//
//  usesにShellAPIが必要
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
  LRdExePath  : string;
  LParameters : string;
begin
  LRdExePath := 'AcroRd32.exe';
  LParameters := '/A page=' + IntToStr(SpinEdit1.Value)
               + '&zoom=100'
               + '&toolbar=0'
               +  ' ' + AnsiQuotedStr(ExpandFileName('..\PDF文書.pdf'), '"');


  ShellExecute(Handle, '', PChar(LRdExePath), PChar(LParameters), nil, SW_SHOW);
end;

end.