0

ここにいるすべての親切な人々のおかげで、私は InDesign CS6 のスクリプトを大量に学びました! これは、ドキュメントの printPreferences を設定する際の問題です。ここに私が持っているコードがあります:

    with(document.printPreferences) {
        activePrinterPreset = outputPreset;
        pageRange = outputRange;
        for (var j = 0; j < allInks.length; j++) {
            document.inks.item(allInks[j]).printInk = false;
        }
        for (var k = 0; k < printInks.length; k++) {
            if (printInks[k].toString() === "Black") {
                $.writeln("Found Black!");
                printBlack = true;
                $.writeln("Set Black!");
            } else {
                document.inks.item(printInks[k]).printInk = true;
            }
        }
        if (offsetJob) {
            // If it's an offset job, we might need to change page sizes.
            if (productType === "HI-N13W") {
                paperSize = PaperSizes.custom;
                paperHeight = 12.5;
                paperWidth = 8.5;
            } else if (productType.subString(3,5) === "PC") {
                paperSize = PaperSizes.custom;
                paperHeight = 8;
                paperWidth = 12.5;
            } else if (couldBeBothJobs.toString().indexOf(productType.subString(3,5)) > -1) {
                paperSize = "US Letter";
            } else {
                paperSize = PaperSizes.custom;
                paperHeight = 8;
                paperWidth = 25;
            }
        }
    }

2 番目のforループでは、最初にドキュメント内のすべてのインクを印刷用にオフにしたことがわかります。printInks次に、アレイ内のもののみをオンにします。ただし、「Black」という単語が配列に存在する場合、そのためのインクがないため、代わりに組み込みの printPreference 「printBlack」を設定します。(これは、他の 3 つ (printCyan、printMagenta、および printYellow) を補完します。)

InDesign CS6 Object Model Referenceによると、ブール値であると想定されています。ただし、スクリプトがそのポイントに到達するたびに停止します。エラーメッセージを確認できるように、その小さなコードだけを新しいドキュメントに貼り付けると、次のようになります。

    The property is not applicable in the current state.

これは何を意味するのでしょうか?さらに重要なことに、どうすれば修正できますか? このプロパティを設定する前にトラッピングをオフにする必要があることはわかっていますが、確実にオフになっていることを確認しました。

4

1 に答える 1

0

Adobe Community Forumsでこの質問をしたところ、印刷設定の一部はドキュメントに直接設定できず、代わりに印刷プリセットに設定する必要があり、それがアクティブな印刷プリセットとして設定されるとのことでした。 . したがって、必要なプリセットを再構築し、新しい一時的なプリセットに割り当てました。結果は次のとおりです。

    try {
        tempPreset.name;
    }
    catch(eNoSuchPreset) {
        tempPreset = app.printerPresets.add({name:"tempPreset"});
    }

    // Let's turn off all of the spot colors before everything else.
    for (var j = 0; j < allInks.length; j++) {
        document.inks.item(allInks[j]).printInk = false;
    }

        with(document.printPreferences) {
            tempPreset.printer = Printer.POSTSCRIPT_FILE;
            tempPreset.ppd = "OYO Imagesetter";
            tempPreset.pagePosition = PagePositions.CENTERED;
            tempPreset.paperSize = PaperSizes.CUSTOM;
            tempPreset.paperHeight = "12.5 in";
            tempPreset.paperWidth = "6.5 in";
            tempPreset.colorOutput = ColorOutputModes.SEPARATIONS;
            tempPreset.trapping = Trapping.OFF;
            tempPreset.screening = "60 lpi / 600 dpi";
            tempPreset.sendImageData = ImageDataTypes.OPTIMIZED_SUBSAMPLING;
            pageRange = outputRange;
            // Now let's turn off all of the CMYK colors.
            tempPreset.printCyan = false;
            tempPreset.printMagenta = false;
            tempPreset.printYellow = false;
            tempPreset.printBlack = false;
            // Then we turn back on BLACK if it exists.
            for (var k = 0; k < printInks.length; k++) {
                if (printInks[k] === "Black") {
                    tempPreset.printBlack = true;
                } else {
                    document.inks.item(printInks[k]).printInk = true;
                }
            }
            // If this is a four-color process job, then turn back on all of the process colors.
            if (processJob) {
                tempPreset.printCyan = true;
                tempPreset.printMagenta = true;
                tempPreset.printYellow = true;
                tempPreset.printBlack = true;
            }
            // That concludes OYO seps.
        }
        var mydpp = document.printPreferences;
        mydpp.activePrinterPreset = "tempPreset";

これで、このスクリプトを完了するまでの 99% が完了しました。わーい!!

于 2013-06-18T17:52:22.897 に答える