※この記事は弊社が経験的に得た知識を元に記述しております。不都合が起こっても弊社社はなんら責任をもちませんのでご了承ください。
DDE通信でPDFファイルを印刷する際の注意点があります。
PDFファイルの印刷設定が無視されてしまう。
Adobe ReaderでPDFファイルを開き、印刷すると印刷ダイアログにPDFファイルに埋め込まれた印刷設定が初期値として設定されます。
印刷すると設定された条件で印刷されます。
しかし、DDE通信でAcroExch.DocumentのFilePrintSilentを使用して印刷するとPDFファイルの印刷設定が無視されてしまいます。
以前、Adobe Readerで印刷した設定が有効になるようです。この値はレジストリのキー「HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\9.0\AVGeneral」に保持されています。
一度もAdobe Readerで印刷をしていない場合は初期値が採用されているようです。
今回設定したのは以下の3つです。
bprintAutoRotato ・・・ 自動回転と中央配置
bprintExpandToFit ・・・ ページの拡大/ 縮小
SetPageSize ・・・ PDFのページサイズに合わせて用紙を選択
強引ですが印刷前に関連するレジストリを更新するとレジストリに設定した内容で印刷されます。
それと同時にキー「HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\9.0\Originals」の「bShrinkToFit」に”0″が設定されていないと上記で設定した内容が有効にならないようです。
複数のAdobe ReaderやAcrobatシリーズがインストールされている場合、どのプロセスが起動するか解らない
先に掲載したプログラムではどのプロセスが動くか判断できなのでレジストリを更新してもうまく行かない場合があります。
どちらでも動くようにするか、インストールを片方だけにするか対応しておかないと、同じパソコンで印刷されたPDFファイルなのに用紙サイズの合わせて縮小されたりされなかったりとムラがでます。