AcroExch.AVDoc: PrintPagesSilent メソッド

TOP > AcroExch.AVDoc > PrintPagesSilent      [...]


説明

どんなダイアログボックスも表示しないで、指定された範囲のページを印刷します。

このメソッドはダイアログボックスを表示しないのを除いたAVDoc.PrintPagesと同じです。

PrintPagesSilentはいつもデフォルトプリンタ設定を使用します。

形式

VARIANT_BOOL PrintPagesSilent(
               long nFirstPage,
               long nLastPage,
               long nPSLevel,
               long bBinaryOk,
               long bShrinkToFit);

引数

  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)=縮小しない  

戻り値

  • 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キーでステップ実行しながら動作確認する。
  • 事前に参照設定をする。
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

戻る


キーボード

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

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

Shortcut Keys

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

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

  1. 管理人様

    お世話になっております。

    現在、PDFをXPSに変換時、
    ファイル名ダイアログを表示しないようにする方法を検討しております。

    PrintPagesSilent メソッドでは、ファイル名を指定するパラメタはなく、
    使用しても、ファイル名ダイアログが表示されてしまいます。

    その他のメソッド等みましたが、対策が見当たりませんでした。
    もし、ご存知でしたら教えていただけないでしょうか?

  2. きんじ さん
    はじめまして
    取り急ぎ、分かっている範囲で返答させて頂きます。

    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

  3. 管理人様

    ご回答ありがとうございます。

    やはり、事前にファイル名等が設定する処理がないのですね。。

    ご提供頂いた自動化ソフトについても参考にさせていただきます。
    ありがとうございました。

  4. 管理人様

    注釈が入っているPDFファイルについて、
    Acrobatアプリケーションにて印刷時にダイアログの「注釈とフォーム(alt+M)」にて選択可能な
    「文書」
    「文書と注釈」
    「文書とスタンプ」
    「フォームフィールドのみ」
    を制御し印刷する方法を探しております。SetPreferenceEx メソッドにある「Annot 」関連の「avpPrintAnnots 」では制御できませんでした。

    私の探し方が悪いのだとは思いますが、ご存知でしたらファイルごとにvba上で制御する為の方法についてご教示頂けますと幸いです。
    差し当たり、『印刷時の注釈の表示/非表示のAcrobatアプリケーションでの制御方法 via vba』について分かれば、と。

    宜しくお願いいたします。

  5. 506000 さん
    はじめまして。
    処理方法の性格上、トラブルにつながりやすいので長文となります。

    印刷ダイアログの「注釈とフォーム」をOLEで制御する方法は有りません。しかし、別の方法が有るのでご提案させて頂きます。その内容の最終的な動作検証はしていないのでご注意下さい。

    Acrobat - 印刷 / 注釈とフォーム

    ▼概略

    レジストリを操作して、Acrobat/印刷の「注釈とフォーム」に該当する箇所を強制的に変更します。

    注意点です。 Acrobatは起動時のみにレジストリからその内容を読み取り、各設定内容に反映します。そして終了時のみに各種動作上の設定内容をレジストリに保存します。 Acrobat起動中にレジストリからの読み込みや書き込みは基本的に有りません。(経験上の話)

    VBAからレジストリの変更はWindows APIを一般的に使います。しかし、当サイトではRegコマンド使用した方法(1~2日後にこのコメント下部で紹介)をご提案します。

    ▼レジストリの情報

    調査した環境です。

    • Acrobat XI Pro (Ver 11.0.23)
    • Windows 10 Pro 64bit

    今回の該当するレジストリの箇所は以下です。

    Acrobat - 印刷 / 注釈とフォームのレジストリ

    [HKEY_CURRENT_USER\Software\Adobe\Adobe Acrobat\11.0\AVGeneral]
    "iprintWhat"=dword:00000000

    上記の「11.0」はAcrobat XIのバージョンで変わります。
    使用中のAcrobatバージョン番号はコチラから取得できます。

    ネットには"iprintWhat"の値で保存されている、という情報は存在しません。ココに書いている方法(内容も使用しているツールも古い・・)で当サイトが独自に調査した結果です。Acrobatを実際に起動して、 「注釈とフォーム」を変更して出したのが以下の結果です。

    • "iprintWhat"=dword:00000000 :文書
    • "iprintWhat"=dword:00000001 :文書とスタンプ
    • "iprintWhat"=dword:00000002 :文書と注釈
    • "iprintWhat"=dword:00000003 :フォームフィールドのみ

    ▼VBAでの処理手順

    これ以降はVBAロジックでの処理です。

    1. Acrobatを強制的に終了します。
      エラーも判断せずに終了の命令を実行するだけで結構です。メモリに残っているとイロイロと後で困るからです。
    2. 現在のAcrobat関連のレジストリ("HKCU\Software\Adobe\Adobe Acrobat\11.0\AVGeneral" 以下の)内容を一旦保存します。(*1)
      Reg Exportコマンド を使用します。
    3. 6秒以上待ちます。
      VBAからAcrobatを終了する様に命令を実行しても、メモリ上からAcrobatが消えるのに数秒掛かるからです。時間はパソコンに依存しますから、実際は倍の時間を推奨します。 (*2)
    4. レジストリを変更して、「注釈とフォーム」をピンポイントで更新します。
      Reg Addコマンド を使用します。
      Regコマンドの例:reg add "HKCU\Software\Adobe\Adobe Acrobat\DC\AVGeneral" /v iprintWhat /t REG_DWORD /d 3 /f
    5. Acrobatを起動して印刷します。
    6. Acrobatを 終了 します。
    7. 上記3へ戻ります。
    8. レジストリを上記2の保存情報(*1)を元に、元の状態に戻します。
      Reg Importコマンド を使用します。

    処理時間を考慮すると、同じ「注釈とフォーム」の状態で5の印刷を繰り返す事になるはずです。

    ▼Windows APIを使わない理由 (経験上)

    Regコマンドを使う理由も有ります。

    • Windows APIはメンテナンスが難しい
    • レジストリを扱う上で操作が難しいのはトラブルにつながる
    • OSに深く依存するために環境面で使えなくなるケースが有る
    • 過去OSでWindowsの再起動しないとレジストリに反映しなかった経験が有る。たぶん、私の経験不足とやり方がまずかったと思っています。

    ▼その他

    • VBAで数秒待たせる命令「Sleep」はコチラを参照して下さい。
    • Acrobatの英語表記について
      環境設定の言語を「起動時に選択」に変更して調査しました。
      • 注釈とフォーム     :Comments & Forms
      • 文書          :Document
      • 文書と注釈       :Document and Markups
      • 文書とスタンプ     :Document and Stamps
      • フォームフィールドのみ :Form fields only
    • 上記を使って「Acrobat Print "Document and Markups" "Document and Stamps" "Form fields only"」でネット検索しましたが、英語サイト上にもプログラミングで制御する情報は無かったです。
    • Acrobatが起動中にレジストリを手修正して、その後で「Acrobat上での設定を変更ー>Acrobatの終了」をしても、レジストリはAcrobatの終了の影響を受けない。 <ーココが理解できない所です!

    レジストリ操作がはじめての場合はご注意下さい。変更を間違えると、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コマンド版)」を正式に公開しました。
    ご検討ください。

コメントを残す

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

CAPTCHA


出来るだけ早く返答する様には心がけています。
が、遅くなる時もありますのでご了承ください。


SAMURAI Plugin

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

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

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