20 返信 最新の回答 日時: Jun 21, 2007 5:03 PM ユーザー:tyatya@

    AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?

      Windows上のコマンドラインから、AdobeReaderを使用し、PDF文書の印刷をしています。
      その際、/cjsオプションを使用して1文書を印刷する度にウィンドウを閉じています。
      AdobeReader8.1にアップグレードしたところ、下記のような問題が発生しています。

       [コマンドライン実行例]
        "C:¥Program Files¥Adobe¥Reader 8.0¥Reader¥AcroRd32.exe" /n /t /h /cjs C:¥temp¥test.pdf

       [実行結果]
        ・AdobeReader7.0 → OK(印刷される)
        ・AdobeReader8.0 → OK(印刷される)
        ・AdobeReader8.1 → NG(ファイル開設エラー※)

        ※エラーメッセージ「この文書を開くときにエラーが発生しました。このファイルが見つかりません。」
         AdobeReader8.1でも、/cjsオプションを指定しない場合は印刷されますが、AdobeReaderが閉じません。

      そこで質問なのですが、
       1. /cjsオプションは、8.1で無くなってしまったのでしょうか?
       2. /cjsオプションが、8.1で無くなっている場合、似た機能の別オプションは追加されていないのでしょうか?
       3. /cjsオプションが、8.1で無くなっている場合、8.2(?)以降のバージョンで復活の可能性はあるのでしょうか?

      何か情報をご存知の方がいましたら、教えていただけませんでしょうか?
        • 1. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
          Level 1
          以前から何度か同じようなことを回答しています。

          http://forums.adobe.co.jp/cgi-bin/WebX/.2870f370/0
          http://forums.adobe.co.jp/cgi-bin/WebX/.25727750/0
          http://forums.adobe.co.jp/cgi-bin/WebX/.23fcfb03/0

          いろいろ書いていますが、要点はこんなところでしょうか。
          1)コマンドラインはサポートされていない。
          2)コマンドラインからの印刷について記述されている唯一の文書は Developer FAQ だけらしい。
          http://support.adobe.co.jp/faq/qadoc/spitz.nsf/0/f8e63b98a96bae9a49256e14002b8daf/$FILE/Ac ro_faq.pdf
          3)サポートされていないのだから、突然使えなくなってもあきらめるしかない。

          上記のAcrobat 8.0 の文書には「/cjs」というオプションはありません。
          Acrobat 7.0や6.0、5.0のころの同様の文書にも、
          「/cjs」というオプションはなかったと記憶しています。

          「/cjs」はどんな動作をするオプションなのですか?
          あなたは「/cjs」というオプションを、どこで知ったのですか?
          • 2. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
            Level 1
            habacchiさん、ご回答ありがとうございます。
            やはりサポート外なんですね。便利な機能だったのですが、あきらめるしか無さそうですね。
            丁寧なご説明ありがとうございました。

            /cjsオプションについては、印刷終了後に、AdobeReaderを閉じてくれるようです。よって、バックグランド印刷のような動作が実現できます。以前、ネットを検索しててたまたま見つ けたもので、厳密な意味で、「どこで知ったのか」は分かりません。スミマセン。

            個人的な愚痴ですが、コマンドラインをサポートしてくれれば、AdobeReaderの利用方法はかなり広がると思うんですけどねぇ。残念です。
            • 3. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
              Level 1
              まず質問に答えます。

              >  1. /cjsオプションは、8.1で無くなってしまったのでしょうか?

              知りません。

              >  2. /cjsオプションが、8.1で無くなっている場合、似た機能の別オプションは追加されていないのでしょうか?

              後述。

              >  3. /cjsオプションが、8.1で無くなっている場合、8.2(?)以降のバージョンで復活の可能性はあるのでしょうか?

              あるでしょうね。何%か知りませんけど。Adobeの内部情報を知っている者でない限り、このようにしか答えられません。

              ここから本題です。
              エクスプローラの「印刷」時に、AdobeReaderに渡されるオプションを調べれば良いかと。
              AdobeReader 7.0の場合、印刷時のオプションは、/p /h pdf_nameです。実際これをコマンドラインから指定すると、質問者が提示したコマンドラインと同じ動作をするようです。
              AdobeReader 8.1でもこれでOKかもしれませんし、駄目な場合でもレジストリを検索すれば、printにおけるオプションが判るはずです。
              • 4. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                Level 1
                bestie%rainbow milkさん、ご回答ありがとうございます。

                >>3. /cjsオプションが、8.1で無くなっている場合、8.2(?)以降のバージョンで復活の可能性はあるのでしょうか?

                >あるでしょうね。何%か知りませんけど。Adobeの内部情報を知っている者でない限り、このようにしか答えられません。

                おっしゃる通りです。
                Adobeのデベロッパーサポートに問い合わせできそうな窓口を見つけましたので、まずは、そちらに聞いてみます。
                お騒がせして申し訳ありませんでした。
                (デベロッパーサポートより有用な回答がありましたら、報告するつもりです)

                >エクスプローラの「印刷」時に、AdobeReaderに渡されるオプションを調べれば良いかと。

                その線は一度考えましたが、当方の環境ですと、エクスプローラのフォルダオプションで、拡張子PDFのファイルタイプに、printのアクションが登録されていませんでした。
                私の確認方法(下記の通り)が悪いのかな。。。

                 a. エクスプローラ起動
                 b. ツール - フォルダオプション を選択
                 c. ファイルタイプ タグを選択し、拡張子PDFを選択
                 d. 詳細設定ボタンを押下
                 e. 「アクション」欄を確認
                   → "print"が存在しない

                 ※環境は、Windows2000 SP4です。
                • 5. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                  Level 1
                  面倒なので詳しい説明はしませんが、拡張子PDFに直接関連づけられているわけではないようなので、確かにその方法では確認できません。でもレジストリエディタを起動(ファイル名を指定して実 行→regedit)し、AcroRd32で検索すれば、恐らく次のキーに見つかります。

                  HKEY_CLASSES_ROOT¥AcroExch.Document.7¥shell¥Print¥command

                  で、「/p /h ファイル名」はどうでした?
                  • 6. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                    Level 1
                    >面倒なので詳しい説明はしませんが、拡張子PDFに直接関連づけられているわけではないようなので、確かにその方法では確認できません。でもレジストリエディタを起動(ファイル名を指定して 実行→regedit)し、AcroRd32で検索すれば、恐らく次のキーに見つかります。

                    >HKEY_CLASSES_ROOT¥AcroExch.Document.7¥shell¥Print¥command

                    解説ありがとうございます!
                    AdobeReader8.1でも、印刷時のオプションが「/p /h ファイル名」であることが確認できました。

                    >で、「/p /h ファイル名」はどうでした?

                    単一のPDFファイルを印刷する場合には、全く問題なく動作します。
                    ただ、複数のPDFファイルを連続して印刷する場合には、1番目を印刷した後で止まってしまいます。
                    手動でウィンドウを閉じれば、2番目の印刷が動作するので、AdobeReaderがウィンドウを閉じるまで終了を返してくれない為だと思われます。
                    この問題を解決するため、/cjsオプションを使用していたものです。
                    他の手があると良いのですが。。。難しそうですね。。。
                    • 7. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                      Level 1
                      以下の感じでBATファイルを作ってみてはどうでしょう?
                      このBATファイルを実行してみると、それぞれウインドウが直ぐに表示され、スプールが終わると勝手に閉じていきます。

                      cd ¥
                      cd Program Files¥Adobe¥Reader 8.0¥Reader
                      start AcroRd32.exe /n /h /t C:¥temp¥doc01.pdf
                      start AcroRd32.exe /n /h /t C:¥temp¥doc02.pdf
                      start AcroRd32.exe /n /h /t C:¥temp¥doc03.pdf

                      ------------------------------------------------------------
                      問題点
                      ------------------------------------------------------------
                      スプールが終わっても閉じないウインドウが、必ず一つあるようです。
                      スプールされる順番が、BATファイルで記述した順番通りとは限らないようです。
                      /h オプションは効いていないようで、アイコン化されず、きっちりウインドウが表示されます。

                      ※この問題点は、Windows Vista Ultimate のコマンドプロンプトで実験した結果です。
                      • 8. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                        Level 1
                        あれ、昨日確認した際には、/p /hで処理終了後にウィンドウを閉じてくれたと思っていましたが、改めて確認すると閉じないですね。申し訳ないです。
                        • 9. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                          Level 1
                          bell3さん、ご回答ありがとうございます。

                          >以下の感じでBATファイルを作ってみてはどうでしょう?
                          >このBATファイルを実行してみると、それぞれウインドウが直ぐに表示され、スプールが終わると勝手に閉じていきます。

                          startコマンドは未検証でしたので、早速試してみました!
                          (私は別バッチに実行文を書いて、callコマンドで呼び出していました。)

                          startコマンドの検証結果ですが、全ての処理を一気に流している動きに見えます。スプールサイズが小さい順に印刷されているようです。
                          そこそこのスペックのマシンであれば問題なく印刷できますが、低スペックのマシンで大量印刷する場合が心配なんですよね。。。
                          できれば、安全に、1つのPDFファイルの印刷が終わってから、次のPDFファイルを印刷する仕組みにしたいと考えています。
                          startコマンドですと、/waitオプションを指定するイメージです。一応、/waitオプション付きで検証しましたが、やはり、1番目の終了待ちで止まってしまいます。

                          ※ /hオプションだけでなく、/tオプションも怪しいです。Developer FAQ の説明には、「…印刷したのち、Adobe Readerを終了します。」と書いてあるのに、終了してくれないし。やはりサポート外だからってことなんでしょうね。。。
                          • 10. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                            Level 1
                            bestie%rainbow milkさん、とんでもないです!
                            回答を頂いて感謝しています。
                            • 11. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                              Level 1
                              cjsオプションなどについては以下のブログ内で言及されているが、どこからの情報であるかは不明。

                              ・コマンドラインでPDFファイルを印刷する。(AdobeReader7.0/8.0)
                              http://scripting.cocolog-nifty.com/blog/2007/01/pdfadobereader7_8a57.html
                              ・コマンドラインでPDFファイルを印刷する。(Acrobat Reader 6.0)
                              http://scripting.cocolog-nifty.com/blog/2006/12/pdf_4c95.html
                              ・Adobe Reader 7のPDFファイルの関連付けを改善する
                              http://scripting.cocolog-nifty.com/blog/2007/01/adobe_reader_7p_9f62.html

                              印刷プリンタがPostScriptに対応している場合、PDFを予めPostScriptファイル化することでコマンドラインによる印刷も可能のような気がするが・・・。
                              • 12. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                Level 1
                                >安全に、1つのPDFファイルの印刷が終わってから、次のPDFファイルを印刷する仕組みにしたいと考えています。

                                印刷が終わってからとは、具体的にはどういう状況をいうのかわかりませんが、以下の方法はどうでしょうか?

                                --------------------------------------
                                今朝のBATを修正
                                --------------------------------------
                                cd ¥
                                cd Program Files¥Adobe¥Reader 8.0¥Reader
                                start AcroRd32.exe /t C:¥temp¥doc01.pdf
                                call c:¥temp¥WaitAndClose.vbs
                                start AcroRd32.exe /t C:¥temp¥doc02.pdf
                                call c:¥temp¥WaitAndClose.vbs
                                start AcroRd32.exe /t C:¥temp¥doc03.pdf
                                call c:¥temp¥WaitAndClose.vbs

                                --------------------------------------
                                BATから呼び出すWSH(WaitAndClose.vbs)
                                --------------------------------------
                                Dim WSHShell
                                Set WSHShell = WScript.CreateObject("WScript.Shell")
                                '待ち時間の設定(システムにあわせて要調整)
                                Wscript.Sleep 30000
                                'キー操作によるクローズ(Alt + F → X)
                                WSHShell.SendKeys "%FX"
                                'なんとなく、一呼吸おいてみました。
                                Wscript.Sleep 100

                                この方法だと、コマンドラインからPDFを印刷処理し、WaitAndClose.vbs で時間稼ぎののち、SendKeys でAdobe Reader 終了させます。その後、コマンドラインに戻り、次のPDFを印刷処理するものです。
                                すべて、WSHでもいいとも思いますし、色々問題もあるかもしれませんが、とりあえずの参考までに...。

                                ちなみに、WSHだけの適当バージョンは、以下の通り。

                                Dim WSHShell
                                Set WSHShell = WScript.CreateObject("WScript.Shell")

                                call PrintPdfs("c:¥temp¥doc01.pdf")
                                call PrintPdfs("c:¥temp¥doc02.pdf")
                                call PrintPdfs("c:¥temp¥doc03.pdf")

                                Set WSHShell = Nothing

                                Sub PrintPdfs(filepath)
                                WSHShell.Run filepath
                                Wscript.Sleep 10000
                                WSHShell.SendKeys "^p"
                                Wscript.Sleep 1000
                                WSHShell.SendKeys "{ENTER}"
                                Wscript.Sleep 10000
                                WSHShell.SendKeys "%FX"
                                Wscript.Sleep 1000
                                End Sub
                                • 13. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                  Level 1
                                  参考として。
                                  スクリプトのサンプルがマイクロソフトで公開されている。

                                  ・スクリプト センター :プリント サーバー、印刷キュー、印刷ジョブ
                                  http://www.microsoft.com/japan/technet/scriptcenter/scripts/printing/servers/default.mspx

                                  公開されているサンプルをメモ帳にコピーし、拡張子vbsで保存すればいいようだ。
                                  Windows2000 SP4の環境でいくつか試したが、何とか動くようではある。

                                  あとはWSHのリファレンスでも参考にしてはどうか?

                                  『WSHクイックリファレンス 第2版』
                                  http://www.oreilly.co.jp/books/4873113091/
                                  羽山 博 著
                                  2006年10月 発行
                                  ISBN4-87311-309-1
                                  • 14. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                    Level 1
                                    エクスプローラから、複数のPDFファイルを選択し、右クリックから「印刷」を選んだ場合、1つのPDFファイルしか印刷されないようです。
                                    ただし、あらかじめ、Adobe Reader を起動して、同じ操作をすると、すべてのPDFファイルが印刷されます。
                                    このことから、今朝のBATファイルを修正してみました。

                                    cd ¥
                                    cd Program Files¥Adobe¥Reader 8.0¥Reader
                                    start AcroRd32.exe
                                    cmd /c AcroRd32.exe /p /h C:¥temp¥doc01.pdf
                                    cmd /c AcroRd32.exe /p /h C:¥temp¥doc02.pdf
                                    cmd /c AcroRd32.exe /p /h C:¥temp¥doc03.pdf

                                    すると、ドキュメントを開く際、START コマンドでなくても印刷処理後、次のファイルの処理といった感じで、バッチ処理されていきます。
                                    はじめの、start AcroRd32.exe はおまじないみたいなものとして、空打ちしすべてのPDFファイルが印刷された時点で、手動で終了させてみてはいかがでしょうか?

                                    問題点として、印刷処理に取りかかる順は、BATファイルの記述順だと思われますが、なぜかスプールされる順は、その通りではないようです。
                                    • 15. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                      Level 1
                                      > エクスプローラから、複数のPDFファイルを選択し、
                                      > 右クリックから「印刷」を選んだ場合、
                                      > 1つのPDFファイルしか印刷されないようです。

                                      私の環境では同じ現象は発生しない。

                                      3つのPDFファイル(10kbの小さなもの)を用意する。
                                      3つ選択し、右クリックの[印刷]を選ぶ。(このときAdobe Readerは終了させ、プロセス上にもない)
                                      するとAdobe Readerが起動した後、「通常使うプリンタ」に3つとも印刷された。
                                      最後に何も表示されないAdobe Readerウィンドウが残った。

                                      環境:Windows2000 SP4、Adobe Reader 8.1.0(Acrobatは入っていない)

                                      > なぜかスプールされる順は、その通りではないようです。
                                      スプール順と印刷順については以下のようなサポート文章がある。

                                      ・スプールされる順番と印刷される順番が異なる
                                      http://support.microsoft.com/kb/891594/ja
                                      • 16. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                        Level 1
                                        brazil さまご指摘ありがとうございます。
                                        こちらの検証環境では、やはり1つのPDFファイルしか印刷されないようです。
                                        環境:Windows Vista Ultimate、Adobe Reader 8.1.0(Acrobatは入っていない)

                                        brazil さまの環境では、BATファイルの方はどのように振る舞われますか?
                                        最初の、start AcroRd32.exe がない状態でもバッチ処理されるのであれば、理想的な振る舞いだと思うのですが、いかがでしょうか?

                                        また、スプールの件ですが、ご指摘の通り複数のキューされたドキュメントにおいて、確かにプリンタの設定によって実際に印刷が開始される順番は、スプールが開始された順番通りとは限らないと思 います。
                                        先ほど書き込ませていただいたスプールされる順は、印刷キューとして追加される順のことです。表現が紛らわしくてすみません。
                                        「プリンタをオフラインとして使用する」の状態で、プリンタウインドウをモニターしているのですが、何度BATファイルを走らせても、doc03.pdf、doc02.pdf、doc01.p df の順でキューが追加されます。

                                        みなさまの環境では、どうなのでしょうか?
                                        • 17. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                          Level 1
                                          brazilさん、bell3さん、コメントありがとうございます。

                                          bell3さんの「あらかじめ、AdobeReaderを起動する」方法を試しました。印刷する順番と、最後にAdobeReaderが残る2点の問題は、大丈夫だと思います。
                                          ですが、一気にスプールに投げるみたいですので、低スペックのマシンで大量印刷する場合が懸念事項ですね。。。

                                          WSHは初体験なので、オライリーの本を購入して、少し勉強してから試したいと思います。

                                          あと、21日は検証・書き込みができません。
                                          スミマセン。。。
                                          • 18. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                            Level 1
                                            確かに start コマンドの場合、Adobe Reader がどんどん起動し、我先にドキュメントをキューしていきますが、cmd /c コマンドの場合、印刷処理を終了し閉じられるまで、次のドキュメントの処理を待機します。
                                            つまり、最初のおまもり用に start コマンドで実行された Adobe Reader 以外に実行される Adobe Reader は、常に1つだけです。
                                            たとえ、どんなスペックのマシンであっても、印刷キューが大量に増えいくにつれて
                                            処理に時間はかかると思われます。
                                            しかし印刷処理を終了し閉じられるまでの時間が増えていくだけで、完了するまで次のドキュメントの処理はしないので、大丈夫な気がします。
                                            • 19. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                              Level 1
                                              ど忘れしていたが、PowerShellというのがある。
                                              システム管理者向けのコマンドシェル環境で、GUIにもコマンドラインにも対応しているという。
                                              Widnows XP以降に対応し、今後の管理ツールのメインになるのであろう。

                                              プリント関連でどこまでできるのか不明だが、調べておいたほうがよいだろう。

                                              まずは本家のマイクロソフト。
                                              ・Windows PowerShell でのスクリプティング
                                              http://www.microsoft.com/japan/technet/scriptcenter/hubs/msh.mspx

                                              日本語による書籍では以下のものが唯一のものか。洋書には開発者によるものがあるらしい。

                                              「Windows PowerShell宣言!」
                                              http://www.sbcr.jp/books/products/detail.asp?sku=4797340273
                                              吉岡洋 著
                                              ISBN:978-4-7973-4027-3

                                              以下は上記書籍の著者のサイト。
                                              http://d.hatena.ne.jp/newpops/

                                              以下は解説記事のあるサイト。

                                              ・Windows PowerShell徹底解説
                                              http://itpro.nikkeibp.co.jp/article/COLUMN/20061106/252598/
                                              ・次世代Windowsシェル「Windows PowerShell」を試す
                                              http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershell01_01.html
                                              ・Windowsスクリプティング環境比較:PowerShell vs WSH
                                              http://www.atmarkit.co.jp/fwin2k/operation/pshvswsh/pshvswsh_01.html
                                              • 20. Re: AdobeReader8.1で、コマンドラインの/cjsオプションが変更されていますか?
                                                tyatya@ Level 1
                                                3つのPDFファイルを使って試してみたのですが、環境が違うせいなのでしょうか、kani1558さんとは異なる結果となりました。

                                                ご質問の/cjsオプションつきの構文はやはり「ファイルが見つかりません。」と言うエラーが出て文書が開かないのは同じでした。

                                                「/n /t /h ファイル名」の場合は、印刷指示後文書は自動で閉じられて連続印刷もできています。 ただし、/h オプションは効かずにウインドウが表示され、最終的に1つだけファイルが開かれたまま残ってしまいます。印刷順番、最後に残るファイルに規則性はないみたいです。

                                                「/p /h ファイル名」の場合も、最終的に中サイズのウィンドでReaderは起動したまま残りますが、文書は開かれないまま連続印刷できています。

                                                それと、私の環境の場合、Acrobat8.1.0も入っているので偶然気がついたのですが、Acrobatを起動させたままReaderでコマンドライン印刷すると、印刷指示が終わると同時 にReaderも自動終了します。まあ、当たり前なのかもしれませんが。逆に両方とも起動している状態を初めて見たのが不思議でした。仮にAcrobatをお持ちならこの性質(?)を利用して Readerを自動終了させることもできるのでは?とも思いますが。

                                                ちなみにReaderはDドライブにインストールしているので次のような構文(?)で試しています。
                                                "D:¥Adobe¥Reader 8.0¥Reader¥Acrord32.exe"/n /t /h C:¥temp¥test03.pdf
                                                "D:¥Adobe¥Reader 8.0¥Reader¥Acrord32.exe"/n /t /h C:¥temp¥test02.pdf
                                                "D:¥Adobe¥Reader 8.0¥Reader¥Acrord32.exe"/n /t /h C:¥temp¥test01.pdf

                                                "D:¥Adobe¥Reader 8.0¥Reader¥Acrord32.exe"/p /h C:¥temp¥test03.pdf
                                                "D:¥Adobe¥Reader 8.0¥Reader¥Acrord32.exe"/p /h C:¥temp¥test02.pdf
                                                "D:¥Adobe¥Reader 8.0¥Reader¥Acrord32.exe"/p /h C:¥temp¥test01.pdf

                                                環境
                                                WindowsXP+SP2
                                                Adobe Reader 8.1.0
                                                Adobe Acrobat 8.1.0