La secuencia de comandos no genera sangrado en la exportación de PDF y se atasca en otra parte de la secuencia de comandos

Entonces, el siguiente script es una versión modificada del script que encontré aquí . Su objetivo es:

  1. Exporte la página actual como PDF usando el valor predeterminado de HQ Print
  2. Compruebe si hay sangrado. Si hay uno, el sangrado se incluirá en la exportación.
  3. Extrae el contenido del segundo cuadro de texto (en orden de arriba a abajo) que encuentra en la página
  4. Extraiga las dos primeras palabras de ese texto, invierta su orden, agregue un guión entre ellas y luego agréguelo al nombre del archivo.
  5. Exportar el archivo

A partir de ahora, lo único que he logrado que funcione es el elemento n. ° 1. Por alguna razón, este script no exportará sangrado sin importar lo que haga, aunque la propia documentación de InDesign sugiere que lo que tengo allí debería funcionar. Además, no he podido descifrar la forma correcta de manejar los elementos 3 y 4; Traté de modificar la función GetDate para manejar esto, pero no funcionó (como puede ver en las líneas comentadas).

Entonces, gurús de las secuencias de comandos de StackExchange, ¿qué estoy haciendo mal? Cualquier y toda ayuda será muy apreciada. ¡Gracias!

* Nota: en realidad, no necesito la fecha adjunta al nombre del archivo; Solo estaba usando la función GetDate como contenedor para el código de extracción de nombres, ya que la función ya estaba en el código.

var scriptName = "Export current page to PDF - 1.0";  

Main();  

//===================================== FUNCTIONS  ======================================  
function Main() {  
if (app.documents.length == 0) ErrorExit("Please open a document and try again.", true);  
var doc = app.activeDocument;  

if (app.activeWindow.constructor.name != "LayoutWindow") ErrorExit("Unable to get page number. Quit story editor.", true);  

var page = app.activeWindow.activePage; 

with (app.pdfExportPreferences){
pageRange = page.name;
viewPDF = true;
bleedBottom = app.activeDocument.documentPreferences.
documentBleedBottomOffset;
bleedTop = app.activeDocument.documentPreferences.documentBleedTopOffset;
bleedInside = app.activeDocument.documentPreferences.
documentBleedInsideOrLeftOffset;
bleedOutside = app.activeDocument.documentPreferences.
documentBleedOutsideOrRightOffset;
//If any bleed area is greater than zero, then export the bleed.
if(bleedBottom == 0 && bleedTop == 0 && bleedInside == 0 &&
    bleedOutside == 0){
    useDocumentBleedWithPDF = true;
    }
    else{
            useDocumentBleedWithPDF = false;
    }
}


var fileName = doc.name.replace(/\.indd$/, "") + "_" + GetDate() + ".pdf";  
var file = new File("~/Desktop/" + fileName);

var myExportPreset = app.pdfExportPresets.item("[High Quality Print]");
alert (myExportPreset);
doc.exportFile(ExportFormat.pdfType, file, false, myExportPreset);  
}  
//--------------------------------------------------------------------------------------------------------------------------------------------------------  
function GetDate() {  
//var page = app.activeWindow.activePage; 
//var nameFrame = page.textFrames.item(1).contents;
//var employeeName = nameFrame.substr(2)

    var date = new Date();  
    if ((date.getYear() - 100) < 10) {  
  var year = "0" + new String((date.getYear() - 100));  
   }  
 else {  
   var year = new String((date.getYear() - 100));  
   }  
  var dateString = (date.getMonth() + 1) + "-" + date.getDate() + "-" + year + "_" + date.getHours() + "-" + date.getMinutes() + "-" + date.getSeconds();  
return dateString;  
}  

Respuestas (2)

Con respecto al sangrado, ya casi estás allí. Has invertido la lógica en la prueba de sangrado y no deberías usar el ajuste preestablecido, ya que ya estás configurando las preferencias en tu withbloque pdfExportPreferences.

Tal vez si desea usar un ajuste preestablecido, entonces debería cargar el ajuste preestablecido antes del withbloque, pero no lo he probado.

Entonces:

//If any bleed area is greater than zero, then export the bleed.
if(bleedBottom == 0 && bleedTop == 0 && bleedInside == 0 &&
    bleedOutside == 0){

Debiera ser:

 if(bleedBottom != 0 && bleedTop != 0 && bleedInside != 0 &&
        bleedOutside != 0){

Y:

var myExportPreset = app.pdfExportPresets.item("[High Quality Print]");
alert (myExportPreset);
doc.exportFile(ExportFormat.pdfType, file, false, myExportPreset);

Debiera ser:

doc.exportFile(ExportFormat.pdfType, file, false);
Dato curioso: el panel de secuencias de comandos en ID seguirá los accesos directos de las carpetas. Suelte un enlace en la carpeta User scripts a cualquier otra carpeta.
¿Qué significa eso en términos del guión en sí? Lo siento, realmente no sé nada de secuencias de comandos; lo que logré arriba fue el resultado de varias horas e investigación y frustración.
¡Oh, eso es genial! Y muy útil en realidad, ya que me gustaría mantener este script en el servidor para que lo use todo mi equipo.
Nada. Solo tengo una carpeta de "investigación" en mi escritorio a la que agregué un enlace. Me gusta tener mis scripts, etc. en una ubicación más fácil para el acceso y las copias de seguridad. De esta forma no quedan enterrados en la carpeta de programas.
Ahora él dura la configuración del ajuste preestablecido "[Impresión de alta calidad]" según lo previsto.

Debe duplicar el ajuste preestablecido "[Impresión de alta calidad]" y realizar cualquier cambio ya que, a diferencia de la pageRangepreferencia, la configuración de sangrado será anulada por ExportPreset. Puedes colocar tu preset duplicado cuando hayas terminado:

var myExportPreset = app.pdfExportPresets.item("[High Quality Print]").duplicate();
myExportPreset.useDocumentBleedWithPDF = true;

doc.exportFile(ExportFormat.PDF_TYPE, myFile, false, myExportPreset );
myExportPreset.remove();