InDesign: ¿Puedo automatizar la asignación de páginas maestras a varias páginas no contiguas sin usar números de página?

Necesito reemplazar un par de páginas maestras existentes con otras páginas maestras existentes .
Estoy familiarizado con la forma de reemplazar las páginas maestras en general.

Tengo páginas maestras: A, B, C, D, E, F.

Necesito reemplazar todas las apariciones de Master-F con Master-B y todas las apariciones de Master-E con Master-D. El documento tiene varios cientos de páginas. Las páginas del documento con estas asignaciones maestras no son contiguas . Entonces, por ejemplo, necesito cambiar la asignación maestra para la página 4, 8, 10, 22, 40, 43, ~, 130, 190, 340, 347, etc.

  • Me doy cuenta de que simplemente puedo copiar/pegar contenidos entre maestros, o aplicar un maestro a otro.
    (Sin embargo, quiero mantener los maestros existentes como están. Crear un nuevo maestro no será de utilidad).

  • Me doy cuenta de que puedo arrastrar y soltar un maestro en una página de documento para reemplazar el maestro.

  • Me doy cuenta de que puedo usar Apply Master Page to...para aplicar una página maestra basada en los números de página del documento. El campo para ingresar páginas no parece aceptar algo como D-Mastero D:como una entrada viable. (He probado muchas variaciones.)

Factorizar todos y cada uno de los números de página para el reemplazo llevaría tanto tiempo como arrastrar y soltar manualmente los maestros. Puedo hacer todo esto manualmente, pero me encantaría algo más automatizado.

La búsqueda web no ha presentado nada útil. A menudo, simplemente detalla los conceptos básicos de la teoría y las operaciones en lo que respecta a las páginas Maestras. Pero, ¿tal vez mi búsqueda en la web ha sido pobre?

¿Existe un método automatizado para reemplazar todas las instancias de una página maestra con otra página maestra?

es decir, ¿todas las asignaciones Master-F a las asignaciones Master-B independientemente de los números de página del documento ?
¿Algo así como Buscar <> Reemplazar, pero solo con asignaciones de página maestra?

Se me ocurrió que puede haber una secuencia de comandos predeterminada para tal cosa, pero según los nombres de los archivos de secuencias de comandos, no veo ninguna secuencia de comandos predeterminada para esto específicamente. Sin embargo, puede que simplemente me lo esté perdiendo.

(Estoy usando InDesign CS6, pero tengo acceso a versiones más recientes si eso es obligatorio, aunque prefiero CS6).

Hice este script para aplicar un patrón a cada enésima página de un documento. Estoy seguro de que podría cambiarse para hacer lo que quieras. Pero ya me voy a la cama...
Gracias @Wolff. Le echaré un vistazo.

Respuestas (1)

Gracias a @Wolff y algunas búsquedas más, pude editar una secuencia de comandos adicional que encontré en github (¿¿que puede haber sido escrita originalmente por Joonas??) para lograr esto dentro de InDesign.

[None]se refiere a la página maestra predeterminada (en blanco) llamada "[Ninguna]" y se intercambiará como cualquier otra página maestra con este script. [None]no significa "nada" en este caso.

ingrese la descripción de la imagen aquí

---- Actualizado para etiquetas desplegables y un solo paso "deshacer" ----

// Modified from https://gist.github.com/joonaspaakko/f16b47be887a2058cd0c0ac6e7ab0343
// This script is a combination of resources from above URL and courtesy of Mads Wolff
//
// v1.1 Replaces all targeted Master assignments with new Master page assignment, regardless of page number
//


var master;
app.doScript(init, ScriptLanguage.javascript, undefined, UndoModes.ENTIRE_SCRIPT, 'Swap Master Pages');
function init() {
    var doc = app.activeDocument;
    var masters = get_masters(doc);

    dialog( masters );
    if ( master !== false ) {
        var pages = doc.pages;
        for (var i = 0; i < pages.length; i++) {
            var page = pages.item(i);

            if (page.pageItems.length < 1) {

                //Swap them
                if (page.appliedMaster === doc.masterSpreads.itemByName(oldMaster)) {

                    if (newMaster == "[None]") {
                        //Remove master assignment
                        page.appliedMaster = NothingEnum.NOTHING;
                    } else {
                        //Add new Master assignment
                        page.appliedMaster = doc.masterSpreads.itemByName(newMaster);
                    }
                    }
            }
        }
    }
} // init()

function get_masters(doc) {
    var everyMaster = doc.masterSpreads.everyItem().name;
    var masters = ["[None]"];
    for (var i = 0; i < everyMaster.length; i++) {
        masters.push(everyMaster[i]);
    }
    return masters;
}

function dialog(masters) {

    var dlg = new Window("dialog", "Swap Master Pages");
    dlg.orientation = "column";
    dlg.alignChildren = ["right","top"];
    dlg.spacing = 15;
    dlg.margins = 20;
    dlg.preferredSize.width = 220;
    var oldM = dlg.add("group", undefined, {name: "oldM"});
    var swapO = oldM.add("statictext", undefined, " Find Master ");
    var oldDropdown = oldM.add("dropdownlist", undefined, masters);
    var newM = dlg.add("group", undefined, {name: "newM"});
    var swapN = newM.add("statictext", undefined, " Assign Master ");
    var newDropdown = newM.add("dropdownlist", undefined, masters);
    var buttons = dlg.add("group");
    buttons.alignment = ["center","top"];
    var btn_cancel = buttons.add("button", undefined, "Cancel");
    var btn_ok = buttons.add("button", undefined, "Swap");

    oldDropdown.selection = 0;
    newDropdown.selection = 0;

    btn_cancel.onClick = function() {
        master = false;
        dlg.close();
    }

    btn_ok.onClick = function() {
        oldMaster = oldDropdown.selection.toString();
        newMaster = newDropdown.selection.toString();
        dlg.close();
    }

    dlg.show();
}

Esto no altera las Páginas Maestras de ninguna manera. Simplemente altera las asignaciones de la página maestra aplicadas a las páginas del documento.


  1. Copie la secuencia de comandos anterior en un archivo de texto, asígnele el título SwapMasters.js.
  2. Agregar el archivo a[Hard Drive] / Applications / InDesign / Scripts / Scripts Panel
  3. Use este guión simplemente haciendo doble clic en él en el panel Guiones dentro de InDesign
    ( Window > Utilities > Scripts)
¡Lindo! No tenías que darme crédito, pero gracias. 😀 Codificar la interfaz a menudo me lleva más tiempo que la función en sí. Una cosa que le recomendaría agregar sería ejecutar la initfunción de esta manera: app.doScript(init, ScriptLanguage.javascript, undefined, UndoModes.ENTIRE_SCRIPT, 'Swap Master Pages');. Esto ejecuta el script como una acción que se puede deshacer denominada "Intercambiar páginas maestras" en el menú, por lo que si se arrepiente de haber ejecutado el script, no tendrá que deshacer todos los intercambios individuales.
Buen punto @Wolff Etiquetas actualizadas y agregadas para los menús desplegables.
He usado este script para ese propósito en el pasado: graphicdesign.stackexchange.com/questions/35838/… Use el script> copie todos los números de página requeridos> Indesign: Aplicar maestro a las páginas> pegar números de página - Más trabajo, pero dado el tipo de tarea, funciona bien. v.2.2. está detrás de la URL esencial de github. Y también en el registro de cambios del script en la parte superior, puse un enlace a v.1. en el que podría elegir un maestro específico. — @Wolff Creé una aplicación web para crear cuadros de diálogo SUI: scriptui.joonas.me .