PDFをChildフォームとして表示

解決


おっ  2005-10-06 22:02:58  No: 17930

通常PDFを開くとき、ShellExecuteや、CreateProccess あたりを使って
Acrobat を開かせますが、自分で作ったアプリケーション内に表示させるには、
どうしたらいいのでしょう?
メインフォームは、当然fsMDIFormにしておきます。
IEなんかでも、PDFを表示できますし、なにか方法があるのでしょうけど、
アプローチ方法がわからないので、質問しました。
AcrobatReaderのインストールでも、pdf.ocxがインストールされるので、
使い方はともかく、それを使えばいいのでしょうか?


deldel  2005-10-06 22:24:09  No: 17931

WebBrowser1 を貼り付けて、

var
  Flags, TargetFrameName, PostData, Headers: OleVariant;
  wFileName: WideString;
begin
  wFileName := 'aaa.pdf';
  WebBrowser1.Navigate(wFileName, Flags, TargetFrameName, PostData, Headers);
end;


ブラウザ不要  2005-10-06 23:34:52  No: 17932

「ActiveXの取り込み」で「Acrobat Control for ActiveX」を選択。
あとは、ActiveXページのPDFコンポをChildフォームに貼り付けるだけ。

Child.Pdf1.Src := 'PDFファイル名';


おっ  2005-10-06 23:42:52  No: 17933

なるほど、こういうアプローチもありか!と、目から鱗が落ちた感じがしたのですが、
ShellExecuteと同じくAcrobatが開いてしまいました。

よくよく考えてみれば、Acrobatの設定で 「PDFをブラウザ上で表示」にチェックを入れていませんでした。
また、このチェックを入れても、なぜか表示されずにフリーズ状態になってしまいました。

WinXPSP1+IE6+AcrobatReader6の環境ですが、このあたりにも何か関係があるのかもしれません。

とりあえず、pdf.ocxの研究してみます。


おっ  2005-10-07 00:05:46  No: 17934

ActiveXを取り込んで、フォームに貼り付けしないで、
動的に生成したら・・・CPU使用率100%で止まった・・・。

var
  pdf  :TPdf;
begin
  pdf := TPdf.Create(Self);
  pdf.Parent := Self;
  pdf.Align := alClient;
  pdf.Src := WideString('D:\tekitou\aaa.pdf');
end;

同じくコンポーネントをインストールしてフォームに貼り付けたけど、
srcを設定した時点で同じようにCPU使用率100%達成のまま固まった。

WinXPSP+ScrobatReader6が悪いのか?


おっ  2005-10-07 00:35:16  No: 17935

http://support.adobe.co.jp/faq/qadoc/spitz.nsf/a2eb70004ad8915849256d49000a66c5/f8e63b98a96bae9a49256e14002b8daf?OpenDocument
のAcrobat Developer FAQ によると・・・

> Adobe Reader を使用して独自のアプリケーションウィンドウに PDF を表示する
> Adobe Reader Integration Key License Agreement の制約により、PDF ファイルを外部ウィンド
> ウに表示するプラグインを作成することはできません。
> アドビでは、Acrobat および Adobe Reader に付属している Acrobat ActiveX(OCX)コンポーネ
> ントを使用した開発はサポートしておらず、ライセンスもしていません。このコンポーネントの
> 目的は、Internet Explorer との統合にあります。Acrobat の ActiveX(OCX)開発に関する資料も
> 用意されていません。

ということで、pdf.ocxはIEで表示させるためだけのものであり、それ以外の利用は認めてないということらしいです。

また、どうしても表示させたいなら、AcrobatSDKを入手(有償)して、開発しなさいということらしいです。

ん〜、残念。


おっ  2005-10-07 00:35:56  No: 17936

これでは、解決してないけど、終了ですね。


TPDF ⇒ TAcroPDF  2005-10-07 08:34:14  No: 17937

インストールされているAcrobat Readerのバージョンは?
Acrobat Reader7.0では表示用のActiveXコントロールが別の物(別名)になっているらしいですね。TPDFだったのが TAcroPDFに。


おっ  2005-10-07 08:55:58  No: 17938

> インストールされているAcrobat Readerのバージョンは?

三つほど上のレスで
> WinXPSP+ScrobatReader6が悪いのか?
と、見事に書き損じているように、
WinXP SP1 + Acrobat Reader 6.0 です。

あと、自分だけで使うのでなく、配布しないといけないので、
Acrobat Reader 7.0 という固定の環境にするわけにはいきません。

レスありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加