Windows のコマンドラインから Acrobat や Adobe Reader を使用して印刷する方法

TOP > *


バージョンは古いですがコチラにそのコマンドラインの使い方が記述されています。Acrobat ReaderのEXEファイル名(AcroRd32.exe)は古いので置き換えて見て下さい。


備考

  1. Adobe Reader で PDF ファイルを表示 / 印刷する方法」も参考にして下さい。
  2. itte さんのコメントからネットワークプリンタを指定する時は「ポート名」を省略しないと印刷できない、と報告を受けています。
    環境が無いので未確認です。 [2012/08/02]
  3. Parameters for Opening PDF Files(日本語版)
    Adobe Acrobat SDK Version 8.1
    Acrobat v8.1 のコマンドラインに関する公開PDF情報です。日本語なので非常に判りやすい内容です。URLによる開き方の説明も有ります。

 

 

注意事項

  1. /cjs」の隠しオプション?なるものを使用している方がいます。一時的に使用するのは問題無いと思われます。しかし業務システム等などに使用するのはおやめ下さい。v8.1以降は使用不可になっています。
  2. コマンドラインの引数はバージョンにより異なる場合があります。使用するバージョンを確認し、SDK等で確認の上、ご使用ください。実際に、結構なバラツキがある感じを受けます。動作確認は必須です。
  3. 稀に印刷できない場合が有るみたいです。コチラを御覧ください。

TOPへ

「Windows のコマンドラインから Acrobat や Adobe Reader を使用して印刷する方法」への16件のフィードバック

  1. 管理人様

    Windows のコマンドラインからAcrobatを使用して印刷する際、
    PDFを【画像として印刷】したいのですが、実現不可能なのでしょうか。

    http://pdf-file.nnn2.com/?p=128
    上記URLを参考に、
    レジストリのcPrintAsImageを設定して、
    コマンドラインから印刷しても、【画像として印刷】オプションの設定が反映されません。

    手動でPDFを起動し、そのまま印刷すると、
    【画像として印刷】オプションの設定は反映されているようで、
    画像として印刷されます。
    ですので、レジストリの指定は間違っていないと思います。

    コマンドラインから印刷する場合は、レジストリを変更しても、
    設定の変更は不可能なのでしょうか?
    対応する方法があればご教授お願い致します。

  2. nsさん。
    はじめまして。

    かなり過去の話なので記憶が薄れていますが。
    コマンドラインはフルパスを含めてAcroRd32.exe 又は Acrobat.exeが間違いないと言う前提です。

    参考ページの内容に書かれている通りに0.1単位のバージョンでレジストリの扱いが変わります。
    また、そこに書かれているのは「AcroExch.AVDoc:PrintPages メソッド」での使用時ですので、コマンドラインは未検証です。
    仮に出来たとしても nsさんと全く同じ環境は出来ないので、解決につながる可能性は非常に低いです。

    nsさんの検証ではレジストリの内容が反映されないのならば、簡単なアプリを作って、その中から「AcroExch.AVDoc:PrintPages メソッド」を呼び出すしか手がないと思われます。

    >コマンドラインから印刷する場合は、レジストリを変更しても、
    >設定の変更は不可能なのでしょうか?

    結果が解答となります。
    ミニアプリの作成を提案します。

    ※但し。
    以下をお手数ですが再度試して下さい。
    ①Acrobatを起動して設定を初期状態にする。
    ②Acrobatを終了する。
    ③該当するレジストリのエクスポート(バックアップ)する。
    ④Acrobatを起動して【画像として印刷】オプションを設定変更する。
    ⑤Acrobatから印刷テストを行う。
    ⑥Acrobatを終了する。
    ⑦再度レジストリのバックアップを行なう。
     事前バックアップしたレジストリと比較して変更が有ることを確認する。
     確認出来ない時は設定レジストリ項目が別に変更されている事になります。
    ⑧この状態でコマンドラインでの印刷を行なって下さい。

    上記でもダメな場合はミニアプリの作成となります。

  3. 管理人様

    早々の解答ありがとうございます。

    下記内容、再度試してみましたがダメでした。
    >①Acrobatを起動して設定を初期状態にする。
    >②Acrobatを終了する。
    >③該当するレジストリのエクスポート(バックアップ)する。
    >④Acrobatを起動して【画像として印刷】オプションを設定変更する。
    >⑤Acrobatから印刷テストを行う。
    >⑥Acrobatを終了する。
    >⑦再度レジストリのバックアップを行なう。
    > 事前バックアップしたレジストリと比較して変更が有ることを確認する。
    > 確認出来ない時は設定レジストリ項目が別に変更されている事になります。
    >⑧この状態でコマンドラインでの印刷を行なって下さい。

    ミニアプリ作成するかどうかは、検討してみます。

    有難うございました。

  4. 管理人さん。
    はじめまして。
    プログラム初心者です。
    自分では調べきれなかたので、教えてください。

    ExcelからPDFをプリンタを指定して印刷したいのですが出来ません。
    プリンタは会社のネットワークにつながったプリンタです。

    Private Sub CommandButton1_Click()
    Dim Filename As String
    Dim PrinterName As String

    Filename = "C:\sample\sample.pdf"
    PrinterName = "DocuCentre-IV C5580 on Ne11:"

    Set myShell = CreateObject("WScript.Shell")
    myShell.Run ("AcroRd32.exe /t " & Filename)
    Set myShell = Nothing
    End Sub
    これだとデフォルトプリンタで印刷は出来ましたが、
    myShell.Run ("AcroRd32.exe /t " & Filename & " " & PrinterName)
    ですと、PDFのエラーが出ます。
    drivernameとportnameは省略してもしなくても出来ませんでした。
    もしくは、間違っているかもしれません。

    どうすれば、プリンタ指定して印刷できますか?
    以上、ご教授頂ければ幸いです。
    Excel2000 windowsXP acrobatreader10 です。

  5. itte さん。はじめまして。

    当記事はメモ内容で実績がありません。
    また、同じ様な環境が無いので確認が出来ません、が。
    経験上から出来るだけ返答させて頂きます。

    SDKの説明から判断すると、ネットワークプリンターへの印刷は可能と思っています。
    以下のURLから例を取得しました。

    http://mail-archives.apache.org/mod_mbox/xmlgraphics-fop-dev/200105.mbox/%3CKKEOLFIOLBIKEADHELGPOECBCHAA.denis.kranjcec@zpm.fer.hr%3E

    AcroRd32.exe /t yourFile.pdf "¥¥APPLICATIONS¥SUPPORT_LASERJET_5SI" "HP
    LaserJet III" "¥¥APPLICATIONS¥SUPPORT_LASERJET_5SI"

    通常ではネットワークプリンターは「¥¥[コンピューター名]¥[プリンター名]」と指定します。
    ドライバー名はXPメニューから「プリンタとFAX」で表示されているプリンター名を右クリックすると「プロパティ」画面が表示されます。その「詳細設定」タブにドライバー名が有りますのでそれを指定してみて下さい。
    それと多分問題は無いと思いますが、他のソフトでそのネットワークプリンターが使用出来る事も再度確認して下さい。セキュリティ上でダメな場合も考えられます。
    注意:¥は半角の¥を使用して下さい。

    少しでも解決につながれば幸いです。

  6. 管理人さん
    早いご返答ありがとうございます。
    こんなに早い返事うれしいです。ありがとうございます。

    ¥¥[コンピューター名]¥[プリンター名]にしたら、
    エラーなくなりました。ありがとうございます。動きは印刷しているように動いてはいるのですが印刷はされません(汗)
    プリンタのポート名は「プリンタとFAX」→「プロパティ」→「ポート」タブ→「ポートの構成」→「ポート名」であってますか?
    [プリンタ名]はon Ne**:はいりますか?
    [コンピュータ名]は「システムのプロパティ」→「コンピュータ名の変更」→「コンピュータ名」ですか?
    基本知識がなくてすみません。
    どうか、ご教授下さい。

  7. たびたび、すみません。
    [ポート名]省略したら出来ました!!
    ありがとうございました!!
    ずっと、悩んでいたので感謝します。
    ありがとうございました。

  8. itte さんへ。

    おめでとうございます。
    それは itte さんの実力です。v(^_^)

  9. 管理人さん
    いつもお世話になります。
    Acrobat Readerで
    PDFを開いてからメッセージを出したいのですが、どうすれば、PDF起動して表示されたのを待てますか?
    Set myShell = CreateObject("WScript.Shell")
    myShell.Run ("AcroRd32.exe /A page=1 C:\sample\sample.pdf")
    Set myShell = Nothing
    '***************待ち時間(ミリ秒)*******
    Application.Wait [Now() + "0:00:05.0"]
    '***************************************
    msgbox"PDF開いたよ"
    今はこんな感じで待っているのですが、1秒で表示される時があれば、10秒以上表示に時間がかかるときもあるので、失敗する時が多いです。
    とにかく、PDFが表示されてから次の命令をしたいのですが、ご教授頂ければうれしいです。
    Excel2000 windowsXP acrobatreader10 です。
    いつも、質問ばかりですみません。
    宜しくお願い致します

  10. itte さんへ。
    まだ調査中ですが、取り急ぎ返答します。

    >・・失敗する時が多い・・

    その原因が気になりますが、
    RUNメソッドを実行する前にDir 関数で拡張子も含めてフルパスでファイルの存在チェックを行なって下さい。
    ファイルのフルパスに問題が有るような気がします。

    それと以下のURLを参照して下さい。
    http://www.f3.dion.ne.jp/~element/msaccess/AcTipsAdobeReader.html#OpenPdf
    今回の件で初めて知りましたが、Acrobar Readerだけで印刷と表示を行うExcel用のモジュールを提供しています。
    今後、使えそうな部分が有るような気がするので、現在検証中です。

    少しでも解決につながれば幸いです。

  11. 管理人さん。
    いつも、ありがとうございます。
    >・・失敗する時が多い・・
    というのは、使うパソコンによって、PDFを開く時間が違うので、メッセージがPDFが開く前に出てしまったり、開いてからしばらくたってから、メッセージが開いたりするという意味です。Application.Wait で待っているので。解りづらくごめんなさい。
    ファイルのフルパスは問題ありません。
    教えていただいたURLを早速見てみます。
    ありがとうございます。

  12. 管理人さん。
    おはようございます。返事遅くなり、申し訳ございませんでした。
    参考にしたのはhttp://amaxi.sitemix.jp/blog/archives/1033
    です。
    『デフォルトインストールの場合は、以下の様なパスになります。
    “C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe”』と書いてあったので、Reader 10.0も使えるのかなと単純に思っただけです(汗)
    とりあえずは、動いていますが、何も知識がなく使っているので恥ずかしいです。

    まだ、PDF開くのを待てません・・・(汗)難しいです・・・

  13. itte さんへ。

    紹介したモジュールを使うとAcrobat Readerのバージョンや起動時のフルパスをレジストリから自動取得してくれます。
    起動時のコマンドを意識しなくても引数を与えるだけで済みます。

    Private Sub CommandButton1_Click()
    On Error GoTo Err:
    Dim dRet As Double ‘戻り値
    ‘PDFファイルを画面表示する
    dRet = AdobeReader.OpenPdf(FilePath:="c:\work\execMenuItem.pdf")
    ‘Excelを最前列に表示
    AppActivate Application.Caption
    If dRet = 0 Then
    ‘OpenPdf関数でエラー発生
    MsgBox "OpenPdfでシステムエラーが発生しました" & vbCrLf & _
    "システム担当者へ連絡してください。", vbOKOnly + vbCritical + _
    vbApplicationModal, "システムエラー"
    Else
    ‘正常終了
    MsgBox "OKです", vbOKOnly, "正常終了"
    End If
    Exit Sub

    Err:
    Dim strMsg As String
    strMsg = "以下の内容をシステム担当者へ連絡してください。" & _
    vbCrLf & "エラー番号:" & Err.Number & _
    vbCrLf & "エラー内容:" & Err.Description
    ‘エラーのメッセージボックスを表示
    MsgBox strMsg, vbOKOnly + vbCritical + vbApplicationModal, "システムエラー"
    End Sub

    上記でテストした結果、Acrobat Reader起動後にメッセージの表示が出来ました。
    希望する処理が出来ると思います。

    ご確認下さい。

  14. 管理人さん。
    ついに出来ました!!
    といっても、全て管理人さんの言うとおりにやっただけですが(笑)
    こんなプログラム初心者に丁寧な説明、本当にありがとうございました。
    本当に感謝感謝です。

  15. itte さんへ。

    お時間が有りましたら、以下にもお礼をお願いします。
    Adobe Reader で PDF 文書を表示/印刷する方法
    URL: www.f3.dion.ne.jp/~element/msaccess/AcTipsAdobeReader.html 今は消滅

    素晴らしいモジュールを公開してくれた事に管理人も感謝しています。
    Acrobat Readerのバージョンを意識して引数を調整してコマンド起動してくれますし、綺麗なモジュール内容になっています。
    こちらのサイトでも提供サイトの管理人の承諾を得て、紹介記事を書く予定です。

    とにかく、itte さんの問題が解決出来て良かったです。v(^_^)

コメントを残す

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

CAPTCHA



SAMURAI Plugin

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

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



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

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