TOP > AcroExch.AVDoc > PrintPagesSilentEx [...]
説明
どんなダイアログボックスも表示しないで、指定された範囲のページを印刷します。
このメソッドはダイアログボックスを表示しないのを除いたAVDoc.PrintPagesExと同じです。
PrintPagesSilentExには、PrintPagesSilentより多くのパラメタがあります。
PrintPagesSilentExはいつもデフォルトプリンタ設定を使用します。(変更可能。備考参照)
形式
VARIANT_BOOL PrintPagesSilentEx(
long nFirstPage,
long nLastPage,
long nPSLevel,
long bBinaryOk,
long bShrinkToFit,
long bReverse,
long bFarEastFontOpt,
long bEmitHalftones,
long iPageOption);
引数
- 第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)=縮小しない - 第6引数(long bReverse) :
(ポストスクリプト印刷専用)
正の数:逆順に印刷
正の数で無い:昇順に印刷 - 第7引数(long bFarEastFontOpt) :
(ポストスクリプト印刷専用)
目的のプリンタに「マルチ-バイト」字体があるなら、正の数にセット。
でなければ、0にセット。 - 第8引数(long bEmitHalftones) :
(ポストスクリプト印刷専用)
0以外の正の数:ドキュメントで指定されたハーフトーン
0:以外。 - 第9引数(long iPageOption) :
印刷範囲のオプション。以下のどれかを指定する。
※IAC.BASのモジュールから
PDAllPages(-3) : 範囲内の全てのページ
PDEvenPagesOnly(-5) : 偶数ページのみ
PDOddPagesOnly(-4) : 奇数ページのみ
戻り値
- 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
説明:どんなダイアログボックスも表示しないで、指定された範囲のページを印刷します。
001 Private Sub Test_AVDoc_PrintPagesSilentEx()
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.PrintPagesSilentEx(1, 2, 2, 0, 0, _
014 0, 0, 0, PDAllPages)
015
016 'PDFファイルを閉じます。
017 lRet = objAcroAVDoc.Close(1)
018
019 'Acrobatアプリケーションを終了する。
020 lRet = objAcroApp.Hide
021 lRet = objAcroApp.Exit
022
023 'オブジェクトを強制解放する
024 Set objAcroAVDoc = Nothing
025 Set objAcroApp = Nothing
026
027 End Sub
028
Highlight:プログラミング言語のソースコードを構文で色分け (GUI編)
補足
- 正直、第7引数、第8引数の詳細な使用方法が不明です。
- 印刷先のデフォルトプリンタを変更する事が出来ます。
「デフォルトプリンタを一時的に変更する方法」 を参照して下さい。
参照
動作確認環境
- WindowsXP Pro(+ SP3) +
Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate
< 戻る >
ブラウザ画面の文字サイズを変更するショートカットキー
Shortcut Keys
|
はじめまして。とても参考にしています。
今、外部からAcrobatReaderを起動して、指定したドキュメントを印刷する簡単なプログラムを作っているのですが、プリンタの指定とPrintAsImageのフラグを立てたいのですが、OLEではやりかたがわかりません。Javascriptを使ったりするのでしょうか?
もし、方法をご存知でしたらご教示いただけると幸いです。
ariさん。初めまして。
少し遅くなりました。※出掛けてました。
質問内容に判る範囲で即答させて頂きます。
Q1)「プリンタの指定」+「指定ドキュメントを印刷」
http://pdf-dde.jugem.jp/ にある
FilePrintTo:http://pdf-dde.jugem.jp/?eid=36
を一度見てください。目的に合わなければ、その諭旨の返答をお願いします。
Q2) 「OLEでのやり方」
OLEでプリンター指定での印刷は無かったです。確か・・。
Q3)Javascriptを使ったりするのでしょうか?
AcrobatJavaScriptは管理人が完全な技術取得状態では無いので返答には少しお時間が掛かります。※調べるのに時間が掛かります。
で、ですね。(汗)、「PrintAsImageのフラグ」の意味が理解できません。
管理人はPDFの専門家では無いんでス。(恥
あと、環境面(OS,Readerのバージョン、開発言語)での情報をお願いします。
コメントありがとうございます!
http://pdf-dde.jugem.jp/?eid=36
こちらのサイトも見させていただきました。ありがとうございます。
確かにプリンタの指定はできそうですが、コマンドラインから指定する以上の細かい指定はでいないのですね…
PrintAsImageについてですが、
[ファイル]->[印刷]->[詳細設定]のダイアログの中の
「画像として印刷」にチェックをつけて印刷したいのです。
OSはWindowsXPでReaderは9.1です。開発言語は実現できればなんでもかまいません。
わらにもすがる気持ちです。よろしくお願いします。
ariさん。
全体のやりたい事がイマイチ理解出来ません。
>・・コマンドラインから指定・・
Readerにはコマンドラインでの印刷は可能ですが、プリンター指定までの引数は見かけていません。
「Windows のコマンドラインから Acrobat や Adobe Reader を使用して印刷する方法」
http://pdf-file.jugem.jp/?eid=247
上記ページにある限りです。
>・・「画像として印刷」にチェックをつけて印刷・・
とありますが、PDFの各ページを画像で一旦保存したいのですか? それをプリンタ指定して印刷したいのですか? ならば画像に落とさずそのまま印刷すれば良いと思うのですが・・。
「プリンタの指定」と「PrintAsImageのフラグ」は別々の機能として考えた方がよろしいのでしょうか?
PDFの全頁を一旦画像にしたいのならば、
http://pdf-file.jugem.jp/?eid=96 ページにある
「PDFをJPEGに変換する方法(Excel VBAサンプル)」
http://pdf-file.jugem.jp/?eid=105
を参考にして頂ければ出来ます。
プリンター指定で印刷をしたければ、前のコメントのDDE機能を利用すれば可能です。
返答になっているでしょうか。
重ね重ね、ありがとうございます。
説明が不足していてすみません。
pdfファイルをAcrobatReaderで開いて、自動印刷したいのですが、印刷する先のプリンタドライバはかなり特殊な低解像度のプリンタです(PSプリンタではありません)
プリンタは複数存在するので、印刷時に負荷分散のためにプリンタを指定する必要があります。
また、プリント時の画質を保証するために、PrintAsImageのフラグを立てておきたいのです。このフラグがたっていると、AcrobatReaderは自前で完全なレンダーをしてプリンタに出力しますが、フラグがついていないと、プリンタドライバ任せになる部分があるのです。
PrintAsImageは、AcrobatReaderとプリンタドライバの間で画像渡しにするという意味です。(画像ファイルが出力されるわけではありません)
プリンタを指定して印刷する際に、PrintParamのPrintAsImageフラグを立てるということをOLE経由でやりたいというのが正確なところです。
そもそもOLEからではPrintParamを渡すI/Fがなさそうなんですよね・・・
プリンタの指定の方は、OSに向けてDefaultPrinterを切り替えるという手が使えますので、PrintAsImageのフラグを立てるという点がネックになっています。
わかりにくくてすみません。
上記コメントに対する対策は解決したみたいです。※返事が無いので。
経緯は省略して、以下にその後をメモとして残して置きます。
<質問環境&内容>
・特殊な低解像度のプリンタ
・AcrobatReaderで印刷
・文字では無く画像で印刷したい
<回答>
・OLEにはそれを指示するメソッド無し
・レジストリに「画像で印刷」する情報を持っているみたい
[HKEY_CURRENT_USER¥Software¥Adobe¥Acrobat
Reader¥9.0¥RememberedViews¥cNoCategoryFiles¥c1]
"iTime"=dword:4a714d53
[HKEY_CURRENT_USER¥Software¥Adobe¥Acrobat Reader¥9.0¥UsageMeasurement]
"iRemindCount"=dword:fffffffe
上記2つ内のどちらか。
以上まで回答したが結果は不明。
まあ、ヨシとしましょう。