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

解決


おっ  2005-10-06 13:02:58  No: 17930  IP: 192.*.*.*

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

編集 削除
deldel  2005-10-06 13:24:09  No: 17931  IP: 192.*.*.*

WebBrowser1 を貼り付けて、

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

編集 削除
ブラウザ不要  2005-10-06 14:34:52  No: 17932  IP: 192.*.*.*

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

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

編集 削除
おっ  2005-10-06 14:42:52  No: 17933  IP: 192.*.*.*

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

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

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

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

編集 削除
おっ  2005-10-06 15:05:46  No: 17934  IP: 192.*.*.*

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-06 15:35:16  No: 17935  IP: 192.*.*.*

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-06 15:35:56  No: 17936  IP: 192.*.*.*

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

編集 削除
TPDF ⇒ TAcroPDF  2005-10-06 23:34:14  No: 17937  IP: 192.*.*.*

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

編集 削除
おっ  2005-10-06 23:55:58  No: 17938  IP: 192.*.*.*

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

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

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

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

編集 削除