合計で300p差し上げます。JavaScriptについて質問します。お力お貸しください。


Book1.xlsのA列に書かれたpdfを次々と印刷していく次のようなプログラムがあります。(実行はa.bat)

これについて、A列に書かれたPDFファイル群は、それぞれA4が1枚か、数枚で構成されてます。これらのPDFファイル群を印刷するとき、全てのファイルの全てのページについて、b.pdfというA4、1枚で構成されるpdfの画像を重ねて印刷するにはどうしたらいいでしょうか?

コメントに示すプログラムを修正してください。
合計数千枚印刷するので、出力にかかる時間がなるべく短くなるような論理的に美しいプログラムにしてください。現在それぞれ40くらいのpdfファイル群を印刷しており、出力はレーザープリンタが印刷するより遅い(レーザープリンタが動いていない時間が数秒ある)のでもっと早くなるとかなりうれしいです。b.pdfは20KB、文字50文字程度で構成されているだけなので、何らかの圧縮、加工をする前提でもかまいません。その場合、加工方法も教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/01/18 22:00:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:hamster009 No.1

回答回数3431ベストアンサー獲得回数50

id:ReoReo7

java scriptでしょうか?

日本語で指導していただきたいものです。

2007/01/14 22:47:43
  • id:ReoReo7
    (Openseedさんという方に作ってもらいました)

    a.bat:
    ---------------------------------------
    set PATH=%PATH%;C:\Program Files\Adobe\Reader 8.0\Reader
    cscript a.js Book1.xls
    pause

    ---------------------------------------

    a.js:
    ---------------------------------------
    var excelFile = WScript.Arguments.Item(0);
    var objExcel = WScript.GetObject(excelFile);

    var shell = WScript.CreateObject("WScript.Shell");
    var limit = 100;
    for(var i=1;i<=limit;i++){
    var filename = objExcel.Sheets("Sheet1").Cells(i, 1).value + "";
    if(filename == "undefined"){break;}

    WScript.echo(filename);
    var oExec = shell.Exec('AcroRd32.exe /cjs /t "' + filename + '"');
    while(oExec.Status == 0){WScript.Sleep(10);}
    }
    ---------------------------------------

    本文緒40くらいのPDFとは、それぞれが40KBくらいのサイズという意味です。


    あるいは全部のpdfを書き換えるプログラムでもいいです。
  • id:Mook
    今回の御希望の機能は、通常のスクリプトで実現する方法が思い浮かばないので機能のご紹介だけ。


    御所望の機能は「重ね印刷」と呼ばれるもだと思いますが、印刷する際に透かしやロゴを印刷する機能として提供されています。


    下記のものは試用も出来るようなので、試してみてはいかがでしょうか。
    http://shop.vector.co.jp/service/servlet/Catalogue.Detail.Top?ITEM_NO=SR041688
    価格6000程度、試用時における制限は印刷結果の下側に製品で印刷した旨のメッセージが出力されることのようです。
  • id:openseed
    JavaScript や バッチの範疇ではないと思います。
    別のアプリケーションと組み合わせるといいと思います。
    ※ Acrobat があればExecコマンドの引数の修正だけで出来るかもしれませんが、手元にないので検証できません。


    実は、Mook さんが紹介している、FinePrint の試用版を利用して、前回のサンプルを作っていました。
    このソフトは、プリンタスプールの一種で印刷する前にプレビュー画面で確認することが出来るので便利です。
    ※ 紙への印刷前に抜けがないかも確認できます。

    もし、重ね印刷したい情報が、マル秘だったり定型であれば十分だと思います。

    あとは・・・
    「2度に分けて印刷する」
    ではだめですかね・・・。
  • id:ReoReo7
    MOOKさん、openseedさん、ありがとうございます。全てのpdfファイルを合成するとか・・無理ですよね。「2度に分けて印刷する」が無難ですかね。



この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません