TOP > AcroExch.AVDoc > PrintPagesSilent [...]
説明
どんなダイアログボックスも表示しないで、指定された範囲のページを印刷します。
このメソッドはダイアログボックスを表示しないのを除いたAVDoc.PrintPagesと同じです。
PrintPagesSilentはいつもデフォルトプリンタ設定を使用します。
形式
VARIANT_BOOL PrintPagesSilent(
long nFirstPage,
long nLastPage,
long nPSLevel,
long bBinaryOk,
long bShrinkToFit);
引数
- 第1引数(long nFirstPage) :
印刷を開始する頁番号。1頁目は0を指定する。 - 第2引数(long nLastPage) :
印刷の終了頁。第1引数に注意。 - 第3引数(long nPSLevel) :
ポストレベルを指定する。(2又は3) - 第4引数(long bBinaryOk) :
0以外の数値ならバイナリーデータ。
0は7-bit ASCIIデータ。 - 第5引数(long bShrinkToFit) :
用紙の印刷可能領域に収まる様に縮小印刷指定する。
0(false)=縮小印刷する
0以外(true)=縮小しない
戻り値
- 0 : 成功。
- -1 : PDFドキュメントがオープンされてないか、他で印刷中の場合。
動作するバージョン
Version | Adobe Acrobat |
備考
|
---|---|---|
4
|
-
| Acrobat 4.0 ※Windows 98SE + Excel 2000 |
5
|
-
| Acrobat 5.0.5 |
6
|
-
| Acrobat 6.0.3 Pro |
7
|
-
| Acrobat 7.0.9 Pro Acrobat 7.1.4 Pro |
8
|
OK
| Acrobat 8.1.2 Pro |
9
|
-
| Acrobat 9.3.2 Extended |
10
|
-
| Acrobat X (10.1.8) Extended |
11
|
-
| Acrobat XI (11.0.04) Extended |
- OK = 動作する。
- NO = 動作しない。 戻り値が0を返す。
- - = 未確認。
サンプル:ExcelのVBA
説明:どんなダイアログボックスも表示しないで、指定された範囲のページを印刷します。
- F8キーでステップ実行しながら動作確認する。
- 事前に参照設定をする。
001 Sub AcroExch_AVDoc_PrintPagesSilent()
002
003 Dim objAcroApp As New Acrobat.AcroApp
004 Dim objAcroAVDoc As New Acrobat.AcroAVDoc
005 Dim lRet As Long
006
007 'Acrobatアプリケーションを起動する。
008 lRet = objAcroApp.Show
009 'PDFファイルを開いて表示する。
010 lRet = objAcroAVDoc.Open("E:\Test01.pdf", "")
011
012 'PDFファイルの頁を指定して印刷する。
013 lRet = objAcroAVDoc.PrintPagesSilent(1, 2, 2, 0, 0)
014
015 'PDFファイルを閉じます。
016 lRet = objAcroAVDoc.Close(1)
017
018 'Acrobatアプリケーションを終了する。
019 lRet = objAcroApp.Hide
020 lRet = objAcroApp.Exit
021
022 'オブジェクトを強制解放する
023 Set objAcroAVDoc = Nothing
024 Set objAcroApp = Nothing
025
026 End Sub
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
補足
- 印刷先のデフォルトプリンタを変更する事が出来ます。
「デフォルトプリンタを一時的に変更する方法」 を参照して下さい。
参照
動作確認環境
- WindowsXP Pro(+ SP3) +
Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
< 戻る >
ブラウザ画面の文字サイズを変更するショートカットキー
Shortcut Keys
|
管理人様
お世話になっております。
現在、PDFをXPSに変換時、
ファイル名ダイアログを表示しないようにする方法を検討しております。
PrintPagesSilent メソッドでは、ファイル名を指定するパラメタはなく、
使用しても、ファイル名ダイアログが表示されてしまいます。
その他のメソッド等みましたが、対策が見当たりませんでした。
もし、ご存知でしたら教えていただけないでしょうか?
きんじ さん
はじめまして
取り急ぎ、分かっている範囲で返答させて頂きます。
PrintPagesSilent メソッドはAcrobatの印刷ダイアログを非表示で処理するのであって、XPSに変換する「Microsoft XPS Document Writer」のコントロールは出来ません。
このMicrosoft XPS Document Writerについて調べると必ず「ファイル名で保存」するダイアログが必ず表示されます。
事前にファイル名等が設定出来ればいいのですが、ちょっとネット検索しても見つかりません。
でも、裏ワザ的な方法は有ります。
決してスマートでは無いです。※むしろ「恥ずかしい」かも・・
ファイル保存ダイアログが表示されたら、ササッとファイル名を入力して、保存ボタンをクリックします。
VBAプログラムから行います。
AutoItと言う無料(GPL)の自動化ソフトを使うことによりVBA等からでも上記の処理ができます。
以下にそれを利用したサンプルが有ります。
Acrobat のアクション、バッチ処理を実行する (Acrobat 6~10)
AutoItは本体が英語版ですが、有志による日本語情報も有るのでそれが利用できます。
使った感じはOLEほどでは無いですが、使い方によっては十分機能を発揮します。
一度、ご検討ください。
AutoIt 本家 配布サイト(英語)
http://www.autoitscript.com/site/
AutoIt プログラミング(日本語)
http://autoitjp.at-ninja.jp/
AutoIt の日本語ドキュメントを公開しているサイト(日本語)
http://blog.livedoor.jp/blackcode/archives/1224220.html
管理人様
ご回答ありがとうございます。
やはり、事前にファイル名等が設定する処理がないのですね。。
ご提供頂いた自動化ソフトについても参考にさせていただきます。
ありがとうございました。
管理人様
注釈が入っているPDFファイルについて、
Acrobatアプリケーションにて印刷時にダイアログの「注釈とフォーム(alt+M)」にて選択可能な
「文書」
「文書と注釈」
「文書とスタンプ」
「フォームフィールドのみ」
を制御し印刷する方法を探しております。SetPreferenceEx メソッドにある「Annot 」関連の「avpPrintAnnots 」では制御できませんでした。
私の探し方が悪いのだとは思いますが、ご存知でしたらファイルごとにvba上で制御する為の方法についてご教示頂けますと幸いです。
差し当たり、『印刷時の注釈の表示/非表示のAcrobatアプリケーションでの制御方法 via vba』について分かれば、と。
宜しくお願いいたします。
506000 さん
はじめまして。
処理方法の性格上、トラブルにつながりやすいので長文となります。
印刷ダイアログの「注釈とフォーム」をOLEで制御する方法は有りません。しかし、別の方法が有るのでご提案させて頂きます。その内容の最終的な動作検証はしていないのでご注意下さい。
▼概略
レジストリを操作して、Acrobat/印刷の「注釈とフォーム」に該当する箇所を強制的に変更します。
注意点です。 Acrobatは起動時のみにレジストリからその内容を読み取り、各設定内容に反映します。そして終了時のみに各種動作上の設定内容をレジストリに保存します。 Acrobat起動中にレジストリからの読み込みや書き込みは基本的に有りません。(経験上の話)
VBAからレジストリの変更はWindows APIを一般的に使います。しかし、当サイトではRegコマンド使用した方法(1~2日後にこのコメント下部で紹介)をご提案します。
▼レジストリの情報
調査した環境です。
今回の該当するレジストリの箇所は以下です。
[HKEY_CURRENT_USER\Software\Adobe\Adobe Acrobat\11.0\AVGeneral]
"iprintWhat"=dword:00000000
上記の「11.0」はAcrobat XIのバージョンで変わります。
使用中のAcrobatバージョン番号はコチラから取得できます。
ネットには"iprintWhat"の値で保存されている、という情報は存在しません。ココに書いている方法(内容も使用しているツールも古い・・)で当サイトが独自に調査した結果です。Acrobatを実際に起動して、 「注釈とフォーム」を変更して出したのが以下の結果です。
▼VBAでの処理手順
これ以降はVBAロジックでの処理です。
エラーも判断せずに終了の命令を実行するだけで結構です。メモリに残っているとイロイロと後で困るからです。
Reg Exportコマンド を使用します。
VBAからAcrobatを終了する様に命令を実行しても、メモリ上からAcrobatが消えるのに数秒掛かるからです。時間はパソコンに依存しますから、実際は倍の時間を推奨します。 (*2)
Reg Addコマンド を使用します。
Regコマンドの例:reg add "HKCU\Software\Adobe\Adobe Acrobat\DC\AVGeneral" /v iprintWhat /t REG_DWORD /d 3 /f
Reg Importコマンド を使用します。
処理時間を考慮すると、同じ「注釈とフォーム」の状態で5の印刷を繰り返す事になるはずです。
▼Windows APIを使わない理由 (経験上)
Regコマンドを使う理由も有ります。
▼その他
環境設定の言語を「起動時に選択」に変更して調査しました。
レジストリ操作がはじめての場合はご注意下さい。変更を間違えると、OSが動かなくなり、再インストールが必要になります。
前々からAcrobatの今までに解説してないその他の各種設定に関しては何とかしたいと思っていました。この際なので、Regコマンドについては少しでも楽をしたいので関数で公開する予定(24時間以内)です。しかし要求と異なるので有れば無理して使う必要は全く無いです。
▼▼ 2019-05-26 23:09 追加 ▼▼
レジストリ更新用の関数を暫定的ですが公開しました。(疲
「関数:レジストリの操作(Regコマンド版)」
注意を読んでご使用を検討してください。
テストは必ず影響が出ても復元できる仮想環境(VirtulBox等)をオススメします。
▼▼ 2019-05-27 7:51 追加 ▼▼
506000 さんが使用するAcrobatのバージョンをお知らせ下さい。
関数の内部のロジックで未完成の部分が有り、そこはAcrobatバージョンの影響を受けます。場合によっては当関数は使用できない場合も有ります。
未完成の部分は、調査に一週間程は係るかもしれません。
▼▼ 2019-05-30 17:53 追加 ▼▼
「関数:レジストリの操作(Regコマンド版)」を正式に公開しました。
ご検討ください。