Acrobat/DDE: FilePrintSilentEx

説明

PDFファイルの全ページを印刷ダイアログボックスを表示せずに印刷します。

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

なお、命令が実行された後に直ぐに次の命令に行きます。

つまり印刷が開始されたかは関係無く、直ぐに制御が戻って次の命令が実行できます。

大量印刷に向いています。

但し、連続実行すると印刷がされない場合があるので注意が必要です。

 

形式

[FilePrintSilentEx(char* fullPath)]

 

引数

fullPath
[char*]
印刷ダイアログボックスを表示するPDFファイルのフルパス
注意:パス中に空白があるときは注意する。

 

戻り値

true いつもこの値が戻る。
false これは返らない。

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

 


サンプル:ExcelのVBA

連続で2つのPDFファイルを印刷します。

  • Excel VBA開発環境をF8キーでステップ実行して動作確認する。
  • 以下の Sleep API は標準モジュール内に入れる。

 

Public Declare Sub Sleep Lib "kernel32" _
(ByVal dwMilliseconds As Long)

Sub DDE_FilePrintSilentEx()

Const CON_ACROBAT_PATH = "C:¥Program Files¥Adobe¥Reader 9.0¥Reader¥AcroRd32.exe"
‘PDFのパスに空白がある場合の記述の仕方。
Const CON_PRINT1 = """E:¥Adobe PDF¥TEST-01.pdf"""
Const CON_PRINT2 = """E:¥Adobe PDF¥TEST-02.pdf"""
‘    Const CON_PRINT1 = "E:¥TEST-01.pdf"
‘    Const CON_PRINT2 = "E:¥TEST-02.pdf"
‘Acrobatアプリケーション起動
Shell CON_ACROBAT_PATH
Dim lChanNo As Long
‘DDEチャンネルのオープン
lChanNo = DDEInitiate("Acroview", "Control")
‘PDFファイルのサイレント印刷 (FilePrintSilentEx)
DDEExecute lChanNo, "[FilePrintSilentEx(" & CON_PRINT1 & ")]"
‘スリープが必要
Sleep 2000
DDEExecute lChanNo, "[FilePrintSilentEx(" & CON_PRINT2 & ")]"
‘スリープが必要
Sleep 2000

‘Acrobatアプリケーション終了
DDEExecute lChanNo, "[AppExit()]" ‘これをしないとAcrobatプロセスが残る
‘DDEチャネルを閉る
DDETerminate lChanNo

End Sub

 

補足

  • 引数にも書いているが、印刷するパスに空白が入っているとDDEは失敗します。
    対策としてはパスに空白がある場合はダブル引用符を付加した下さい。
  • Adobe Readerを使っての自動印刷に関しては、メモリ上にプロセスが残るという問題をよく目にしますが、上記サンプルはプロセスは残りません。
    Adobe Reader v9.1では当問題は発生しません。
  • Adobe Readerを使っての自動印刷に適しています。

 

注意事項

※これに関する明記はSDKに見つけれませんでした。

  • FilePrintSilentEx は直ぐに制御が戻ってくるのが特徴ですが、FilePrintSilentExを連続して実行すると、印刷が無視される場合があります。
    FilePrintSilentEx との間に別の処理を実行したい時にFilePrintSilentExを使います。
    連続して印刷する時はFilePrintSilentを使用して下さい。
  • 印刷処理が開始されるまで待たずに直ぐにDDE制御が戻ります。
    つまり次の命令が実行されます。
    その後にDDEチャンネルを閉じる(AppExit)と印刷が無視されます。
    Sleep関数で印刷が開始されるまでの時間稼ぎをする必要があります。
    時間はパソコン環境等によって変わると予想されます。

 

動作確認環境

  • 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.29.html

 

TOPへ

「Acrobat/DDE: FilePrintSilentEx」への2件のフィードバック

  1. Kudos for posting such a useful weblog. Your weblog is not only informative and also very artistic too. There normally are very few people who can write not so simple articles that creatively. Keep up the good work !!

コメントを残す

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

CAPTCHA