Acrobat/DDE: FilePrintSilent

説明

PDFファイルの全ページを印刷します。

印刷ダイアログボックスは表示しません。

印刷時は印刷範囲に収まるようにサイズ変更されて印刷されます。

なお、印刷が終了するまで次の命令には行きません。

 

形式

[FilePrintSilent(char* fullPath)]

 

引数

fullPath
[char*]
印刷するPDFファイルのフルパス
注意:パス中に空白があるときは注意する。

 

戻り値

true 印刷は成功しました。
false fullPathによって指定されたPDFドキュメントが開かれてない。
又は印刷は失敗しました。

注)ExcelのVBAではDDE命令の発信ステートメント上で、戻り値を取得出来ません。

 

 


サンプル:ExcelのVBA

 

指定したPDFファイルの全ページを印刷します。

  • Excel VBA開発環境をF8キーでステップ実行して動作確認する。

 

Sub DDE_FilePrintSilent()

Dim lChanNo As Long ‘DDEチャンネル番号
‘PDFのパスに空白があるとDDE(FilePrintSilentEx)が失敗する。
Const CON_PRINT1 = """E:¥Adobe PDF¥TEST-01.pdf"""
Const CON_PRINT2 = """E:¥Adobe PDF¥TEST-02.pdf"""

‘Acrobat Readerを起動する。
‘注意:環境によってパスを変更する必要がある。
Shell "C:¥Program Files¥Adobe¥Reader 9.0¥Reader¥AcroRd32.exe"
‘DDEチャンネルのオープン
lChanNo = DDEInitiate("Acroview", "Control")
‘PDFファイルのサイレント印刷 (FilePrintSilentEx)
DDEExecute lChanNo, "[FilePrintSilent(" & CON_PRINT1 & ")]"
DDEExecute lChanNo, "[FilePrintSilent(" & CON_PRINT2 & ")]"

‘PDFを全て閉じ、Acrobatアプリケーション終了
DDEExecute lChanNo, "[AppExit()]" ‘Acrobatプロセスも消える
‘DDEチャネルを閉る
DDETerminate lChanNo
Debug.Print Now &
":Finish(FilePrintSilent)"

End Sub

補足

  • 引数にも書いているが、印刷するパスに空白が入っているとDDEは失敗します。
    対策としてはパスに空白がある場合はダブル引用符を付加した下さい。
  • Adobe Readerを使っての自動印刷に関しては、メモリ上にプロセスが残るという問題をよく目にしますが、上記サンプルはプロセスは残りません。
    Adobe Reader v9.1では当問題は発生しません。
  • Adobe Readerを使っての自動印刷に適しています。
  • 印刷ダイアログボックスを表示しないので、デフォルトプリンターに印刷されます。
  • 印刷ダイアログボックスを表示しないので、印刷時のデフォルト設定に注意して下さい。
  • 実際はプリンターのスプーラに入れば、印刷完了と見なし、次の命令を実行します。

 

動作確認環境

  • WindowsXP + SP3 + WindowsUpdate +
    Adobe Reader 9.1.0 + Office Pro 2003

 

Adobe社の解説ページ : 英語

以下がAdobe社のAcrobat DDEの解説ページです。表示には時間がかかります。
http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp/IAC_API_DDE_Messages.104.28.html

 

TOPへ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA