Last active
October 10, 2025 02:01
-
-
Save SebastianCastilloDev/c8901d200fbe92b406a4cc4bf189cd56 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| main(); | |
| function main() { | |
| app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll; | |
| var archivoPDF = File.openDialog("Elige un archivo PDF"); | |
| if ((archivoPDF != "") && (archivoPDF != null)) { | |
| var documento, pagina; | |
| if (app.documents.length != 0) { | |
| var temp = elegirDocumento(); | |
| documento = temp[0]; | |
| nuevoDocumento = temp[1]; | |
| } | |
| else { | |
| documento = app.documents.add(); | |
| nuevoDocumento = false; | |
| } | |
| alert(documento.constructor.name); | |
| if (nuevoDocumento == false) { | |
| pagina = elegirPagina(documento); | |
| } | |
| else { | |
| pagina = documento.pages.item(0); | |
| } | |
| colocarPDF(documento, pagina, archivoPDF); | |
| } | |
| } | |
| function elegirDocumento() { | |
| var nombresDocumentos = new Array; | |
| nombresDocumentos.push("Nuevo Documento"); | |
| for (var contadorDocumento = 0; contadorDocumento < app.documents.length; contadorDocumento++) { | |
| nombresDocumentos.push(app.documents.item(contadorDocumento).name); | |
| } | |
| var dialogoElegirDocumento = app.dialogs.add({ name: "Elige un documento", canCancel: false }); | |
| with (dialogoElegirDocumento.dialogColumns.add()) { | |
| with (dialogRows.add()) { | |
| with (dialogColumns.add()) { | |
| staticTexts.add({ staticLabel: "Colocar PDF en:" }); | |
| } | |
| with (dialogColumns.add()) { | |
| var desplegableElegirDocumento = dropdowns.add({ stringList: nombresDocumentos, selectedIndex: 0 }); | |
| } | |
| } | |
| } | |
| var resultado = dialogoElegirDocumento.show(); | |
| if (resultado == true) { | |
| if (desplegableElegirDocumento.selectedIndex == 0) { | |
| documento = app.documents.add(); | |
| nuevoDocumento = true; | |
| } | |
| else { | |
| documento = app.documents.item(desplegableElegirDocumento.selectedIndex - 1); | |
| nuevoDocumento = false; | |
| } | |
| dialogoElegirDocumento.destroy(); | |
| } | |
| else { | |
| documento = ""; | |
| nuevoDocumento = ""; | |
| dialogoElegirDocumento.destroy(); | |
| } | |
| return [documento, nuevoDocumento]; | |
| } | |
| function elegirPagina(documento) { | |
| alert(documento.name); | |
| var nombresPaginas = new Array; | |
| for (var contador = 0; contador < documento.pages.length; contador++) { | |
| nombresPaginas.push(documento.pages.item(contador).name); | |
| } | |
| var dialogoElegirPagina = app.dialogs.add({ name: "Elige una página", canCancel: false }); | |
| with (dialogoElegirPagina.dialogColumns.add()) { | |
| with (dialogRows.add()) { | |
| with (dialogColumns.add()) { | |
| staticTexts.add({ staticLabel: "Colocar PDF en:" }); | |
| } | |
| with (dialogColumns.add()) { | |
| var desplegableElegirPagina = dropdowns.add({ stringList: nombresPaginas, selectedIndex: 0 }); | |
| } | |
| } | |
| } | |
| dialogoElegirPagina.show(); | |
| var pagina = documento.pages.item(desplegableElegirPagina.selectedIndex); | |
| dialogoElegirPagina.destroy(); | |
| return pagina; | |
| } | |
| function colocarPDF(documento, pagina, archivoPDF) { | |
| app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia; | |
| var columnas = 2; | |
| var filas = 4; | |
| var elementosPorPagina = columnas * filas; | |
| var anchoPagina = documento.documentPreferences.pageWidth; | |
| var altoPagina = documento.documentPreferences.pageHeight; | |
| var anchoElemento = anchoPagina / columnas; | |
| var altoElemento = altoPagina / filas; | |
| // --- Función auxiliar para colocar y ajustar una página del PDF --- | |
| function colocarUnaPagina(paginaActual, numeroPaginaPDF, contadorElementos) { | |
| app.pdfPlacePreferences.pageNumber = numeroPaginaPDF; | |
| // Intentar colocar la página del PDF | |
| var paginaPDF; | |
| try { | |
| paginaPDF = paginaActual.place(File(archivoPDF), [0, 0])[0]; | |
| } catch (e) { | |
| // Si hay un error (ej. la página no existe), no hacer nada y salir. | |
| return false; | |
| } | |
| // Verificar si InDesign colocó la página que pedimos. Si no, es que el PDF no tiene más páginas. | |
| if (paginaPDF.pdfAttributes.pageNumber != numeroPaginaPDF) { | |
| paginaPDF.parent.remove(); // Eliminar el marco vacío creado | |
| return false; // Indicar que no hay más páginas que colocar | |
| } | |
| var fila = Math.floor(contadorElementos / columnas); | |
| var columna = contadorElementos % columnas; | |
| var x = columna * anchoElemento; | |
| var y = fila * altoElemento; | |
| var marco = paginaPDF.parent; | |
| marco.move([x, y]); | |
| marco.rotationAngle = 90; | |
| marco.geometricBounds = [y, x, y + altoElemento, x + anchoElemento]; | |
| marco.fit(FitOptions.PROPORTIONALLY); | |
| return true; // Indicar que la colocación fue exitosa | |
| } | |
| // --- Página 1: Páginas IMPARES --- | |
| var marginPrefs = pagina.marginPreferences; | |
| marginPrefs.top = 0; | |
| marginPrefs.bottom = 0; | |
| marginPrefs.left = 0; | |
| marginPrefs.right = 0; | |
| for (var i = 0; i < elementosPorPagina; i++) { | |
| var numPaginaImpar = i * 2 + 1; | |
| if (!colocarUnaPagina(pagina, numPaginaImpar, i)) { | |
| break; // Si no hay más páginas, salir del bucle | |
| } | |
| } | |
| // --- Página 2: Páginas PARES --- | |
| // Añadir una nueva página solo si hemos colocado al menos una página impar | |
| if (pagina.allPageItems.length > 0) { | |
| var paginaPar = documento.pages.add(LocationOptions.after, pagina); | |
| var marginPrefsPar = paginaPar.marginPreferences; | |
| marginPrefsPar.top = 0; | |
| marginPrefsPar.bottom = 0; | |
| marginPrefsPar.left = 0; | |
| marginPrefsPar.right = 0; | |
| for (var j = 0; j < elementosPorPagina; j++) { | |
| var numPaginaPar = j * 2 + 2; | |
| if (!colocarUnaPagina(paginaPar, numPaginaPar, j)) { | |
| break; // Si no hay más páginas, salir del bucle | |
| } | |
| } | |
| // Si la página de pares quedó completamente vacía, eliminarla | |
| if (paginaPar.allPageItems.length === 0) { | |
| paginaPar.remove(); | |
| } | |
| } | |
| } | |
| // Llamar a la función principal | |
| main(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| main(); | |
| function main() { | |
| app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll; | |
| var archivoPDF = File.openDialog("Elige un archivo PDF"); | |
| if ((archivoPDF != "") && (archivoPDF != null)) { | |
| var documento, pagina; | |
| if (app.documents.length != 0) { | |
| var temp = elegirDocumento(); | |
| documento = temp[0]; | |
| nuevoDocumento = temp[1]; | |
| } | |
| else { | |
| documento = app.documents.add(); | |
| nuevoDocumento = false; | |
| } | |
| alert(documento.constructor.name); | |
| if (nuevoDocumento == false) { | |
| pagina = elegirPagina(documento); | |
| } | |
| else { | |
| pagina = documento.pages.item(0); | |
| } | |
| colocarPDF(documento, pagina, archivoPDF); | |
| } | |
| } | |
| function elegirDocumento() { | |
| var nombresDocumentos = new Array; | |
| nombresDocumentos.push("Nuevo Documento"); | |
| for (var contadorDocumento = 0; contadorDocumento < app.documents.length; contadorDocumento++) { | |
| nombresDocumentos.push(app.documents.item(contadorDocumento).name); | |
| } | |
| var dialogoElegirDocumento = app.dialogs.add({ name: "Elige un documento", canCancel: false }); | |
| with (dialogoElegirDocumento.dialogColumns.add()) { | |
| with (dialogRows.add()) { | |
| with (dialogColumns.add()) { | |
| staticTexts.add({ staticLabel: "Colocar PDF en:" }); | |
| } | |
| with (dialogColumns.add()) { | |
| var desplegableElegirDocumento = dropdowns.add({ stringList: nombresDocumentos, selectedIndex: 0 }); | |
| } | |
| } | |
| } | |
| var resultado = dialogoElegirDocumento.show(); | |
| if (resultado == true) { | |
| if (desplegableElegirDocumento.selectedIndex == 0) { | |
| documento = app.documents.add(); | |
| nuevoDocumento = true; | |
| } | |
| else { | |
| documento = app.documents.item(desplegableElegirDocumento.selectedIndex - 1); | |
| nuevoDocumento = false; | |
| } | |
| dialogoElegirDocumento.destroy(); | |
| } | |
| else { | |
| documento = ""; | |
| nuevoDocumento = ""; | |
| dialogoElegirDocumento.destroy(); | |
| } | |
| return [documento, nuevoDocumento]; | |
| } | |
| function elegirPagina(documento) { | |
| alert(documento.name); | |
| var nombresPaginas = new Array; | |
| for (var contador = 0; contador < documento.pages.length; contador++) { | |
| nombresPaginas.push(documento.pages.item(contador).name); | |
| } | |
| var dialogoElegirPagina = app.dialogs.add({ name: "Elige una página", canCancel: false }); | |
| with (dialogoElegirPagina.dialogColumns.add()) { | |
| with (dialogRows.add()) { | |
| with (dialogColumns.add()) { | |
| staticTexts.add({ staticLabel: "Colocar PDF en:" }); | |
| } | |
| with (dialogColumns.add()) { | |
| var desplegableElegirPagina = dropdowns.add({ stringList: nombresPaginas, selectedIndex: 0 }); | |
| } | |
| } | |
| } | |
| dialogoElegirPagina.show(); | |
| var pagina = documento.pages.item(desplegableElegirPagina.selectedIndex); | |
| dialogoElegirPagina.destroy(); | |
| return pagina; | |
| } | |
| function colocarPDF(documento, pagina, archivoPDF) { | |
| var paginaPDF; | |
| app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia; | |
| var contador = 1; | |
| var salir = false; | |
| var columnas = 2; | |
| var filas = 4; | |
| var elementosPorPagina = columnas * filas; | |
| var anchoPagina = documento.documentPreferences.pageWidth; | |
| var altoPagina = documento.documentPreferences.pageHeight; | |
| var anchoElemento = anchoPagina / columnas; | |
| var altoElemento = altoPagina / filas; | |
| var contadorElementos = 0; | |
| // Establecer los márgenes a cero | |
| var marginPrefs = pagina.marginPreferences; | |
| marginPrefs.top = 0; | |
| marginPrefs.bottom = 0; | |
| marginPrefs.left = 0; | |
| marginPrefs.right = 0; | |
| while (salir == false) { | |
| if (contador > 1) { | |
| if (contadorElementos % elementosPorPagina == 0) { | |
| pagina = documento.pages.add(LocationOptions.after, pagina); | |
| var newMarginPrefs = pagina.marginPreferences; | |
| newMarginPrefs.top = 0; | |
| newMarginPrefs.bottom = 0; | |
| newMarginPrefs.left = 0; | |
| newMarginPrefs.right = 0; | |
| contadorElementos = 0; | |
| } | |
| } | |
| app.pdfPlacePreferences.pageNumber = contador; | |
| var fila = Math.floor(contadorElementos / columnas); | |
| var columna = contadorElementos % columnas; | |
| var x = columna * anchoElemento; | |
| var y = fila * altoElemento; | |
| paginaPDF = pagina.place(File(archivoPDF), [x, y])[0]; | |
| var marco = paginaPDF.parent; | |
| marco.rotationAngle = 90; | |
| marco.geometricBounds = [y, x, y + altoElemento, x + anchoElemento]; | |
| marco.fit(FitOptions.PROPORTIONALLY); | |
| if (contador == 1) { | |
| var primeraPagina = paginaPDF.pdfAttributes.pageNumber; | |
| } | |
| else { | |
| if (paginaPDF.pdfAttributes.pageNumber == primeraPagina) { | |
| salir = true; | |
| // Eliminar la última página si está vacía | |
| if (pagina.rectangles.length == 1 && pagina.rectangles[0].graphics.length == 0) { | |
| pagina.remove(); | |
| } else if (pagina.allPageItems.length === 0) { | |
| pagina.remove(); | |
| } | |
| } | |
| } | |
| if (!salir) { | |
| contador = contador + 1; | |
| contadorElementos++; | |
| } | |
| } | |
| } | |
| // Llamar a la función principal | |
| main(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // funcionando para pagina 1 y 2 | |
| main(); | |
| function main() { | |
| app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll; | |
| var archivoPDF = File.openDialog("Elige un archivo PDF"); | |
| if ((archivoPDF != "") && (archivoPDF != null)) { | |
| var documento, pagina; | |
| if (app.documents.length != 0) { | |
| var temp = elegirDocumento(); | |
| documento = temp[0]; | |
| nuevoDocumento = temp[1]; | |
| } | |
| else { | |
| documento = app.documents.add(); | |
| nuevoDocumento = false; | |
| } | |
| alert(documento.constructor.name); | |
| if (nuevoDocumento == false) { | |
| pagina = elegirPagina(documento); | |
| } | |
| else { | |
| pagina = documento.pages.item(0); | |
| } | |
| colocarPDF(documento, pagina, archivoPDF); | |
| } | |
| } | |
| function elegirDocumento() { | |
| var nombresDocumentos = new Array; | |
| nombresDocumentos.push("Nuevo Documento"); | |
| for (var contadorDocumento = 0; contadorDocumento < app.documents.length; contadorDocumento++) { | |
| nombresDocumentos.push(app.documents.item(contadorDocumento).name); | |
| } | |
| var dialogoElegirDocumento = app.dialogs.add({ name: "Elige un documento", canCancel: false }); | |
| with (dialogoElegirDocumento.dialogColumns.add()) { | |
| with (dialogRows.add()) { | |
| with (dialogColumns.add()) { | |
| staticTexts.add({ staticLabel: "Colocar PDF en:" }); | |
| } | |
| with (dialogColumns.add()) { | |
| var desplegableElegirDocumento = dropdowns.add({ stringList: nombresDocumentos, selectedIndex: 0 }); | |
| } | |
| } | |
| } | |
| var resultado = dialogoElegirDocumento.show(); | |
| if (resultado == true) { | |
| if (desplegableElegirDocumento.selectedIndex == 0) { | |
| documento = app.documents.add(); | |
| nuevoDocumento = true; | |
| } | |
| else { | |
| documento = app.documents.item(desplegableElegirDocumento.selectedIndex - 1); | |
| nuevoDocumento = false; | |
| } | |
| dialogoElegirDocumento.destroy(); | |
| } | |
| else { | |
| documento = ""; | |
| nuevoDocumento = ""; | |
| dialogoElegirDocumento.destroy(); | |
| } | |
| return [documento, nuevoDocumento]; | |
| } | |
| function elegirPagina(documento) { | |
| alert(documento.name); | |
| var nombresPaginas = new Array; | |
| for (var contador = 0; contador < documento.pages.length; contador++) { | |
| nombresPaginas.push(documento.pages.item(contador).name); | |
| } | |
| var dialogoElegirPagina = app.dialogs.add({ name: "Elige una página", canCancel: false }); | |
| with (dialogoElegirPagina.dialogColumns.add()) { | |
| with (dialogRows.add()) { | |
| with (dialogColumns.add()) { | |
| staticTexts.add({ staticLabel: "Colocar PDF en:" }); | |
| } | |
| with (dialogColumns.add()) { | |
| var desplegableElegirPagina = dropdowns.add({ stringList: nombresPaginas, selectedIndex: 0 }); | |
| } | |
| } | |
| } | |
| dialogoElegirPagina.show(); | |
| var pagina = documento.pages.item(desplegableElegirPagina.selectedIndex); | |
| dialogoElegirPagina.destroy(); | |
| return pagina; | |
| } | |
| function colocarPDF(documento, pagina, archivoPDF) { | |
| app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia; | |
| var columnas = 2; | |
| var filas = 4; | |
| var elementosPorPagina = columnas * filas; | |
| var anchoPagina = documento.documentPreferences.pageWidth; | |
| var altoPagina = documento.documentPreferences.pageHeight; | |
| var anchoElemento = anchoPagina / columnas; | |
| var altoElemento = altoPagina / filas; | |
| // --- Función auxiliar para colocar y ajustar una página del PDF --- | |
| function colocarUnaPagina(paginaActual, numeroPaginaPDF, contadorElementos, invertirVerticalmente) { | |
| app.pdfPlacePreferences.pageNumber = numeroPaginaPDF; | |
| var paginaPDF; | |
| try { | |
| paginaPDF = paginaActual.place(File(archivoPDF), [0, 0])[0]; | |
| } catch (e) { | |
| return false; // Error al colocar, probablemente no hay más páginas | |
| } | |
| if (paginaPDF.pdfAttributes.pageNumber != numeroPaginaPDF) { | |
| paginaPDF.parent.remove(); | |
| return false; // El PDF no tiene la página solicitada | |
| } | |
| var fila; | |
| var columna = contadorElementos % columnas; | |
| if (invertirVerticalmente) { | |
| // Invierte el orden de las filas | |
| fila = (filas - 1) - Math.floor(contadorElementos / columnas); | |
| } else { | |
| fila = Math.floor(contadorElementos / columnas); | |
| } | |
| var x = columna * anchoElemento; | |
| var y = fila * altoElemento; | |
| var marco = paginaPDF.parent; | |
| marco.move([x, y]); | |
| marco.rotationAngle = 90; | |
| marco.geometricBounds = [y, x, y + altoElemento, x + anchoElemento]; | |
| marco.fit(FitOptions.PROPORTIONALLY); | |
| return true; | |
| } | |
| // --- Página 1: Páginas IMPARES (orden normal) --- | |
| var marginPrefs = pagina.marginPreferences; | |
| marginPrefs.top = 0; marginPrefs.bottom = 0; marginPrefs.left = 0; marginPrefs.right = 0; | |
| for (var i = 0; i < elementosPorPagina; i++) { | |
| var numPaginaImpar = i * 2 + 1; | |
| if (!colocarUnaPagina(pagina, numPaginaImpar, i, false)) { | |
| break; | |
| } | |
| } | |
| // --- Página 2: Páginas PARES (orden vertical invertido) --- | |
| if (pagina.allPageItems.length > 0) { | |
| var paginaPar = documento.pages.add(LocationOptions.after, pagina); | |
| var marginPrefsPar = paginaPar.marginPreferences; | |
| marginPrefsPar.top = 0; marginPrefsPar.bottom = 0; marginPrefsPar.left = 0; marginPrefsPar.right = 0; | |
| for (var j = 0; j < elementosPorPagina; j++) { | |
| var numPaginaPar = j * 2 + 2; | |
| if (!colocarUnaPagina(paginaPar, numPaginaPar, j, true)) { | |
| break; | |
| } | |
| } | |
| if (paginaPar.allPageItems.length === 0) { | |
| paginaPar.remove(); | |
| } | |
| } | |
| } | |
| // Llamar a la función principal | |
| main(); |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
main();
function main() {
app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;
var archivoPDF = File.openDialog("Elige un archivo PDF");
if ((archivoPDF != "") && (archivoPDF != null)) {
var documento, pagina;
if (app.documents.length != 0) {
var temp = elegirDocumento();
documento = temp[0];
nuevoDocumento = temp[1];
}
else {
documento = app.documents.add();
nuevoDocumento = false;
}
}
function elegirDocumento() {
var nombresDocumentos = new Array;
nombresDocumentos.push("Nuevo Documento");
for (var contadorDocumento = 0; contadorDocumento < app.documents.length; contadorDocumento++) {
nombresDocumentos.push(app.documents.item(contadorDocumento).name);
}
var dialogoElegirDocumento = app.dialogs.add({ name: "Elige un documento", canCancel: false });
with (dialogoElegirDocumento.dialogColumns.add()) {
with (dialogRows.add()) {
with (dialogColumns.add()) {
staticTexts.add({ staticLabel: "Colocar PDF en:" });
}
with (dialogColumns.add()) {
var desplegableElegirDocumento = dropdowns.add({ stringList: nombresDocumentos, selectedIndex: 0 });
}
}
}
var resultado = dialogoElegirDocumento.show();
if (resultado == true) {
if (desplegableElegirDocumento.selectedIndex == 0) {
documento = app.documents.add();
nuevoDocumento = true;
}
else {
documento = app.documents.item(desplegableElegirDocumento.selectedIndex - 1);
nuevoDocumento = false;
}
dialogoElegirDocumento.destroy();
}
else {
documento = "";
nuevoDocumento = "";
dialogoElegirDocumento.destroy();
}
return [documento, nuevoDocumento];
}
function elegirPagina(documento) {
alert(documento.name);
var nombresPaginas = new Array;
for (var contador = 0; contador < documento.pages.length; contador++) {
nombresPaginas.push(documento.pages.item(contador).name);
}
var dialogoElegirPagina = app.dialogs.add({ name: "Elige una página", canCancel: false });
with (dialogoElegirPagina.dialogColumns.add()) {
with (dialogRows.add()) {
with (dialogColumns.add()) {
staticTexts.add({ staticLabel: "Colocar PDF en:" });
}
with (dialogColumns.add()) {
var desplegableElegirPagina = dropdowns.add({ stringList: nombresPaginas, selectedIndex: 0 });
}
}
}
}
function colocarPDF(documento, pagina, archivoPDF) {
app.pdfPlacePreferences.pdfCrop = PDFCrop.cropMedia;
var columnas = 2;
var filas = 4;
var elementosPorPagina = columnas * filas;
var anchoPagina = documento.documentPreferences.pageWidth;
var altoPagina = documento.documentPreferences.pageHeight;
var anchoElemento = anchoPagina / columnas;
var altoElemento = altoPagina / filas;
}
// Llamar a la función principal
main();