AcrobatPro Action x JavaScript by chatGPT ※FOR 軽オフ面付職人用
軽オフの仕事で面付時トンボの外に仮番(通し番号)入れて運用しているんですが、製版の現場は仮番入れるのにAcrobatのフッダで入れています。で、ここを複数ファイルまとめて自動処理できると非常にありがたいという話になり、AcrobatのアクションでJavaScriptにトライしてみました。
どうやって使えば良いのかググるところから始まり、JavaScriptの知識など全くない私がchatGPTを使って何とかなったという話です。
因みに実際業務で使っている指示書や原価確認ツール、外注発注書は私も制作に携わっているのですが、基幹システムがSQLサーバなのでVBA、VBA内のSQL、GASなんかもchatGPTが出てからかなり作成時間の短縮ができてます。他にMicrosoft EdeについているCopilotやGoogleのGemmini(旧Bard)等いろいろ使ってみましたが現時点でchatGPT4o(無料版)が一番私には相性が良くコードの正解率が高いように思います。
面付までの手順です。(officeデータ入稿でA4書籍の場合)
当社は受注した時、複数本の書籍を同時に動かす場合、受注番号を1つ基幹システムから取得し、1枚の指示書に複数本記載して各現場に流れます(台割は当然書籍毎に作ります)
なので印刷データのファイル名も例えばこの様にして製作現場から一旦生産管理を介して製版オペレータに渡されます。(私は生産管理です)
123456-①報告書A.pdf
123456-②報告書B.pdf
123456-③資料.pdf
123456-④概要版.pdf
1)A4規格でx1a保存(Acrobat)
....ここから製版オペレータ...
2)A4を天地左右+6mmに拡張>222x309(QI+面付ソフトのシーケンス)
3)222x309の右下に全ページ案件名+通し番号をフッダ入れ(Acrobat)
4)面付(QI+面付ソフト)
終わったら別工場の軽オフ現場へ
この流れで、3)の作業がファイル名からコピペでAcrobatのフッダ入れでやっているのですが本数が多いと結構手間食ってるようです。
そこでAcrobatアクションでJavascriptを動かす、しかもフォルダを指定すれば中の全ファイル全部処理してくれるというわけです。
// PDFのページ数を取得
var numPages = this.numPages;
// PDFファイル名を取得
var fileName = this.documentFileName;
// マージンをポイントに変換 (1インチ = 25.4mm, 1ポイント = 1/72インチ)
var bottomMargin = 0 / 25.4 * 72;
var rightMargin = -10 / 25.4 * 72;
// フォントサイズを指定
var fontSize = 10;
// テキストを挿入する関数
function addFooterText(pageNum) {
var text = fileName + " (" + (pageNum + 1) + ")";
// テキストをページに追加
this.addWatermarkFromText({
cText: text,
nTextAlign: app.constants.align.right,
nHorizAlign: app.constants.align.right,
nVertAlign: app.constants.align.bottom,
nHorizValue: rightMargin,
nVertValue: bottomMargin,
nStart: pageNum,
nEnd: pageNum,
nFontSize: fontSize,
bOnTop: true,
cFont: "MS-PGothic", // フォントをMSPゴシックに指定
nHorizShift: -rightMargin,
nVertShift: bottomMargin
});
}
// 各ページにファイル名とページ番号を追加
for (var i = 0; i < numPages; i++) {
addFooterText.call(this, i);
}
2)の A4を天地左右+6mmに拡張>222x309(QI+面付ソフト)は軽オフ業者ならお馴染みのQI+のシーケンスで処理しているのですが、Acrobatではフィックスアップの中にある「拡大によって1.5mmの断ち落としを作成」の数値を6mmに変えれば同じことができます。
<Acrobatフィックスアップファイル>
<Acrobatアクションファイル>
編集後記
・この2)(書類を222x309に)と3)(仮番入れ)をつなげてJavaScriptで処理できないかやってみましたがうまくいかず、もう少し試行錯誤中です。
・chatGPTのプロンプトで分かったのは、ただ「通し番号を()付きで入れてくれ」ではなく、「Acrobatのフッダ挿入を使って通し番号を入れて」
にしないと注釈を使って通し番号が処理されてしまいました。明確にAcrobatのこの機能を使って..とした方が正解率が高いようです。