DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

表の斜線の[黒]スウォッチがオーバープリントにならない

標題の通りです。CC2017でも改善されていないバグ(だと個人的には思ってます)です。

f:id:uske_S:20170710210156p:plain f:id:uske_S:20170710210208p:plain

適当に表を用意してもらい、斜線(色を[黒]にする)を引いてオーバープリントプレビューにしてみてください。もしくはPDFに書き出して出力プレビューでも可です。

f:id:uske_S:20170710210219p:plain

デフォルトの設定では[黒]スウォッチは自動でノセ(オーバープリント)になるはずなので、環境設定をいじってなければそのままで。
セルの罫線はきちんとノセになるのですが、斜線だけは手動で「オーバープリント」のチェックをオンにしないとノセになりません。これを仕様と謳うならどつくぞ…。

かといって、セルの設定を開いて[黒]スウォッチ(ないしK100)であればオーバープリントをオンにして…ということを手作業でやるのは骨が折れます。
そこで「斜線に[黒]スウォッチが使われていればオーバープリントをオンにする」スクリプトです。ぺぺぺって適当に書いたので恐縮ですが、こんな感じで自動化が可能です。

var myDoc = app.activeDocument;
var myTxf = myDoc.textFrames;
var tgtBlack = myDoc.swatches.item('Black');
for (var i=0; i<myTxf.length; i++){
    var myTab = myTxf[i].tables;
    for (var k=0; k<myTab.length; k++){
        var myCel = myTab[k].cells;
        for (var m=0; m<myCel.length; m++){
            if (!myCel[m].diagonalLineStrokeOverprint &&
                myCel[m].diagonalLineStrokeColor == tgtBlack){
                myCel[m].diagonalLineStrokeOverprint = true;
                }
            if (!myCel[m].diagonalLineStrokeGapOverprint &&
                myCel[m].diagonalLineStrokeGapColor == tgtBlack){
                myCel[m].diagonalLineStrokeGapOverprint = true;
                }
            }
        }
    }

diagonalLineStrokeOverprintが斜線のオーバープリント設定、diagonalLineStrokeColorがその色。
diagonalLineStrokeGapOverprintが斜線の間隔のオーバープリント設定、diagonalLineStrokeGapColorがその色ということです。
[黒]スウォッチだけでなく、K100であれば問答無用でノセにしたい場合は、例えばmyCel[m].diagonalLineStrokeColor == tgtBlackの部分をmyCel[m].diagonalLineStrokeColor.colorValue.join(',') === "0,0,0,100"とかにすればいいと思われます(試してませんが…^^;;;)。

もし業務でお使いの場合は、スクリプトで修正した個数を表示したり、catch(e)の中にエラーログを記述できるようにしたり、confirm()をつかってひとつずつ確認しながらオーバープリントを設定できるようにしたり、doScriptに突っ込んでUndoModes.FAST_ENTIRE_SCRIPTを指定したり…といったギミックを実装したほうが安全で使いやすいとは思います。

以上、表の斜線に関する一考察でした(?)。