AcroExch.AVDoc: PrintPagesSilentEx メソッド

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. 第1引数(long nFirstPage) :
    印刷を開始する頁番号。1頁目は0を指定する。
  2. 第2引数(long nLastPage) :
    印刷の終了頁。第1引数に注意。
  3. 第3引数(long nPSLevel) :
    ポストレベルを指定する。(2又は3)
  4. 第4引数(long bBinaryOk) :
    0以外の数値ならバイナリーデータ。
    0は7-bit ASCIIデータ。
  5. 第5引数(long bShrinkToFit) :
    用紙の印刷可能領域に収まる様に縮小印刷指定する。
      0(false)=縮小印刷する
      0以外(true)=縮小しない
  6. 第6引数(long bReverse) :
    (ポストスクリプト印刷専用)
      正の数:逆順に印刷
      正の数で無い:昇順に印刷
  7. 第7引数(long bFarEastFontOpt) :
    (ポストスクリプト印刷専用)
      目的のプリンタに「マルチ-バイト」字体があるなら、正の数にセット。
      でなければ、0にセット。
  8. 第8引数(long bEmitHalftones) :
    (ポストスクリプト印刷専用)
      0以外の正の数:ドキュメントで指定されたハーフトーン
      0:以外。
  9. 第9引数(long iPageOption) :
    印刷範囲のオプション。以下のどれかを指定する。
    IAC.BASのモジュールから
      PDAllPages(-3) : 範囲内の全てのページ
      PDEvenPagesOnly(-5) : 偶数ページのみ
      PDOddPagesOnly(-4) : 奇数ページのみ  

戻り値

  • 0 : 成功。
  • -1 : PDFドキュメントがオープンされてないか、他で印刷中の場合。  

動作するバージョン

VersionAdobe
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キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
    IAC.BASが標準モジュールで別途必要です。
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編)
 

補足

参照

動作確認環境

  • WindowsXP Pro(+ SP3) +
    Acrobat 8.1.2 Pro + Office 2003 + MicrosoftUpdate

戻る


キーボード

ブラウザ画面の文字サイズを変更するショートカットキー

  1. [ CTRL ] + [ + ]  :  文字を大きく
  2. [ CTRL ] + [ - ]  :  文字を小さく

Shortcut Keys

  1. [ CTRL ] + [ + ]  :  Up the font size
  2. [ CTRL ] + [ - ]  :  Down the font size

「AcroExch.AVDoc: PrintPagesSilentEx メソッド」への6件のフィードバック

  1. はじめまして。とても参考にしています。
    今、外部からAcrobatReaderを起動して、指定したドキュメントを印刷する簡単なプログラムを作っているのですが、プリンタの指定とPrintAsImageのフラグを立てたいのですが、OLEではやりかたがわかりません。Javascriptを使ったりするのでしょうか?
    もし、方法をご存知でしたらご教示いただけると幸いです。

  2. 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のバージョン、開発言語)での情報をお願いします。

  3. コメントありがとうございます!
    http://pdf-dde.jugem.jp/?eid=36
    こちらのサイトも見させていただきました。ありがとうございます。
    確かにプリンタの指定はできそうですが、コマンドラインから指定する以上の細かい指定はでいないのですね…
    PrintAsImageについてですが、
    [ファイル]->[印刷]->[詳細設定]のダイアログの中の
    「画像として印刷」にチェックをつけて印刷したいのです。
    OSはWindowsXPでReaderは9.1です。開発言語は実現できればなんでもかまいません。
    わらにもすがる気持ちです。よろしくお願いします。

  4. 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機能を利用すれば可能です。
    返答になっているでしょうか。

  5. 重ね重ね、ありがとうございます。
    説明が不足していてすみません。
    pdfファイルをAcrobatReaderで開いて、自動印刷したいのですが、印刷する先のプリンタドライバはかなり特殊な低解像度のプリンタです(PSプリンタではありません)
    プリンタは複数存在するので、印刷時に負荷分散のためにプリンタを指定する必要があります。
    また、プリント時の画質を保証するために、PrintAsImageのフラグを立てておきたいのです。このフラグがたっていると、AcrobatReaderは自前で完全なレンダーをしてプリンタに出力しますが、フラグがついていないと、プリンタドライバ任せになる部分があるのです。
    PrintAsImageは、AcrobatReaderとプリンタドライバの間で画像渡しにするという意味です。(画像ファイルが出力されるわけではありません)
    プリンタを指定して印刷する際に、PrintParamのPrintAsImageフラグを立てるということをOLE経由でやりたいというのが正確なところです。
    そもそもOLEからではPrintParamを渡すI/Fがなさそうなんですよね・・・
    プリンタの指定の方は、OSに向けてDefaultPrinterを切り替えるという手が使えますので、PrintAsImageのフラグを立てるという点がネックになっています。
    わかりにくくてすみません。

  6. 上記コメントに対する対策は解決したみたいです。※返事が無いので。
    経緯は省略して、以下にその後をメモとして残して置きます。
    <質問環境&内容>
    ・特殊な低解像度のプリンタ
    ・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つ内のどちらか。
    以上まで回答したが結果は不明。
    まあ、ヨシとしましょう。

コメントを残す

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

CAPTCHA


★ 文章での質問は難しいですよネ。でも、早く解決して、家に帰りたい。


SAMURAI Plugin

コメントをする時は出来れば以下もお願いします。

  • OS名 バージョン
  • Acrobat バージョン
  • ツール(Excel等) バージョン
コメントにサンプルコードを入れる時はコードを全て全角文字列にしてください。コチラで半角に戻します。それでもエラーが回避できない時はコメント下さい。個別に対処します。



お仕事で当サイトを見ている方へ
考え込んだら、ご質問下さい。
一緒に解決策を考えましょう。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください