Officeデータ入稿あるある|Acrobat Action x JavaScript : //同じページサイズが偶数ページになるように白ページを挟む
Intro
A4仕上がりで数百ページ~時には1000ページ超えの資料で、間にA3折り込みのページがバラバラに複数台出てくるような仕事があります。
最近は減ってはきたものの、A3折り込みが羽根折りで何十台も入る仕事は今では出来る職人が引退してしまい他社で断られることが多いのか、いまだ弊社には声がかかります。(羽根折りってネット検索しても出てこないです。1枚だけ見るとZ折なんですが、それが複数枚続く場合は数ミリずつ折山をずらして折る折り方で、孔雀の羽をイメージしているのか(?)定かではありませんが、いずれにしても限られた業界で使われている呼び方で、今取引している普通の印刷会社に聞いてみると「なにそれ^^?]と言われることも最近は多いです😅
A3折り込みの内容は表とか地図、図面、大体その3種くらいなんですけど、
入稿データを見ると、白ページを入れないで作られている場合が多く、まぁまぁ..気持ちは分かりますけどね。1000ページも作るのに本をイメージして白ページ入れて作るのって時間も手間も半端ないでしょう。
PDF支給でwindows 製版あるある:PDFに注釈の文字が使われている WARNING❗
・PDFに注釈(今はコメントツール)で文字打ってあったり四角や丸いオブジェクトや矢印や…結構多いので、弊社の場合、入稿データに注釈が使われていないかまずチェックしています。
・注釈はx1aやx4にフィックスアップすると印刷範囲の外側へ吹っ飛ばされてしまいますからね^^; これで結構クレームになった事例が昔はよくありました。渡したデータで入っていた文字や図形が抜けてるってね😫
こちらはAcrobatのフィックスアップ「注釈をページコンテンツに統合」で処理します。
一応お客様にはPDFの他に何かあった時のために元データのoffceデータも入稿いただくよう頼んではいますが、最近はPDFだけが多くなってきました。ただword入稿の場合は注意が必要で、一般的なシステムフォントや欧文フォントばかりで作られていれば良いのですが、たまに変な書体もあったりします。
officeデータ入稿最初のチェック点(wordの場合)
・ドキュメントに使われているフォントが作業するPCにあるか。
wordドキュメントを開き、
ファイルメニュー>オプション>詳細設定>フォントの置換
main
前置きが長くなりましたが、記事中にある注釈チェックしたPDFは下の図で、A3折り込みがこんな感じで、いたるところに入っていました。(これは総ページ600頁くらいです) 左が入稿データ、右が白ページ挿入後
まずA4が奇数で終わって次ページがA3だとA4の最後に白ページを入れなければなりませんよね。A3については両面の場合は白ページを挿入して偶数にしなければなりません。でもA3は片面で折加工することも多いため、最後にA3だけ取り出してバインドして現場に渡す事が多いです。
JavaScript for Acrobat Action
同じページサイズが偶数ページになるように白ページを挟むJavaScriptを作ってみました。今回はChatGPT4o(まだ無料版使ってます)
頭から処理していきサイズの違うページが出てきたらその手前に白を入れていき、最終ページも奇数ならしっかり白が入ります。
以下JavaScriptです。
for (var i = 0; i < this.numPages; i++) {
try {
var rect = this.getPageBox("Crop", i);
var nextRect = this.getPageBox("Crop", i + 1);
} catch (e) {
// 最終ページに到達したらループを抜ける
break;
}
// ページサイズの比較 誤差+-3pt
var pageWidthFlag = (rect[2] - 3 <= nextRect[2] && nextRect[2] <= rect[2] + 3) ? 0 : 1;
var pageHeightFlag = (rect[3] - 3 <= nextRect[3] && nextRect[3] <= rect[3] + 3) ? 0 : 1;
// 現在のページ数が奇数かどうかを判定
var isOddPage = ((i + 1) % 2 != 0);
// フラグが立った場合(次ページのサイズが異なる or 奇数ページ)
if (pageWidthFlag + pageHeightFlag + (isOddPage ? 5 : 0) >= 6) {
// ページサイズを取得
var pageWidth = rect[2] - rect[0];
var pageHeight = rect[3] - rect[1];
// 白ページを挿入
this.newPage(i + 1, pageWidth, pageHeight);
i++; // ページを挿入した分インクリメント
}
}
// 全体のページ数が奇数の場合、最後に白ページを挿入
if (this.numPages % 2 == 1) {
var lastRect = this.getPageBox("Crop", this.numPages - 1);
var lastPageWidth = lastRect[2] - lastRect[0];
var lastPageHeight = lastRect[3] - lastRect[1];
this.newPage(this.numPages, lastPageWidth, lastPageHeight);
}