2つのPDFファイルを以下のようなコードで連続して印刷させようとしているのですが、
1つ目の印刷を待ってくれずに2番目の印刷しか実行されません。
きちんと両方共印刷されるにはどうすれば良いでしょうか?
ちなみに、実際にはいくつかのPDFファイルをCheckBoxで選択して印刷させますので、
PDFを連結して1つにすればいいという回答は無しでお願いします。
PathName := ExtractFileDir(Application.ExeName) + '\Additional1.pdf';
WebBrowser1.Navigate(PathName);
if (WebBrowser1.Document <> nil) then begin
AcroPDF := (WebBrowser1.Document as IAcroAXDocShim);
AcroPDF.printWithDialog;
end;
PathName := ExtractFileDir(Application.ExeName) + '\Additional2.pdf';
WebBrowser1.Navigate(PathName);
if (WebBrowser1.Document <> nil) then begin
AcroPDF := (WebBrowser1.Document as IAcroAXDocShim);
AcroPDF.printWithDialog;
end;
1個めのIF文は、確実に条件をクリアしていますか?
例えば、IF文の次の行にShowMessageを入れると、
メッセージダイアログは表示されますか。
もちろんです(#^^#)
それで、2つ目の印刷用に別のWebBrowserを使うようにしたら、
一応、両方とも印刷されるようになりました。
ただ、それぞれの印刷ダイアログが容赦なく同時に表示されますね(^_^;)
で、AcroPDFの事を調べてみたら、printWithDialogなどでも、
処理を待つ事はないようです(´・ω・`)
問題の回答にはなりませんが、直接的な方法もあります。
http://helpx.adobe.com/jp/acrobat/kb/510705.html
問題が解決しない場合の回避策としてどうぞ。
まず
DocumentComplete 待たずに印刷開始してるみたいだけどいいのかな?
あと
AcroPDF.printWithDialog; は印刷終了してから返って来てる?
(WebBrowser1.Documentを書き換えて良い状態で返って来てる?)
2個目の
PathName := ExtractFileDir(Application.ExeName) + '\Additional2.pdf';
前で
ShowMessageで止めれば出ないかな?
ツイート | ![]() |