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ドキュメントがオープンされてないか、他で印刷中の場合。  

 

動作するバージョン

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

 

Private Sub Test_AVDoc_PrintPagesSilentEx()

    Dim objAcroApp As New Acrobat.AcroApp
    Dim objAcroAVDoc As New Acrobat.AcroAVDoc
    Dim lRet As Long

    'Acrobatアプリケーションを起動する。
    lRet = objAcroApp.Show
    'PDFファイルを開いて表示する。
    lRet = objAcroAVDoc.Open("E:¥Test01.pdf", "")

    'PDFファイルの頁を指定して印刷する。
    lRet = objAcroAVDoc.PrintPagesSilentEx(1, 2, 2, 0, 0, _
                                0, 0, 0, PDAllPages)

   'PDFファイルを閉じます。
    lRet = objAcroAVDoc.Close(1)

    'Acrobatアプリケーションを終了する。
    lRet = objAcroApp.Hide
    lRet = objAcroApp.Exit

    'オブジェクトを強制解放する
    Set objAcroAVDoc = Nothing
    Set objAcroApp = Nothing

End Sub  

 

補足

 

参照

 

動作確認環境

  • 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等) バージョン
コメントにサンプルコードを入れるとエラーになる場合が有ります。その時はコードの前後に <code> ・・・</code> タグを入れてください。