Soy relativamente nuevo en el uso de scripts y el kit de herramientas ExtendScript, y trabajo en un entorno de oficina en el que uso Adobe CC2017 y mis compañeros de trabajo usan CS5.
Para que mis archivos de InDesign puedan ser utilizados por todos en mi departamento, entiendo que necesito guardar mis archivos como archivos IDML. Idealmente, me encantaría un script u opción que siempre me permitiera guardar archivos como .idml (por defecto) o como .indd e .idml.
El script que estaba usando fue el que se proporciona en la respuesta a continuación. (Tenga en cuenta que esta no era una solución ideal, ya que solo se activó cuando elegí "Guardar como" y no "Guardar". Una solución ideal sería una opción para guardar como .idml de forma predeterminada).
Script para guardar siempre IDML con INDD
#targetengine "session"
// we need a targetegine to make this work
var doc = app.activeDocument; // get the current doc
// now to the event listener
app.addEventListener('afterSave', function(theEvent) {
$.writeln('saving'); // just to see whats going on
if (!doc.saved) {
// catch those possible mistakes
alert('doc was never saved');
exit();
}
var aName = doc.name; // get the name
var newName = aName.replace("indd", "idml"); // replace the indd to idml
// crate a new File Object next to the indd
var theFile = File(File(doc.filePath).fsName + "/" + newName);
// export
doc.exportFile(ExportFormat.INDESIGN_MARKUP, theFile, false);
});
Sin embargo, después de mi actualización CC2017, aparece el siguiente mensaje de error cuando intento ejecutar el script:
¡No se puede ejecutar el script en la 'sesión' del motor de destino! (#57) ¡La 'sesión' del motor no existe!
¿Alguien más ha experimentado este mismo problema y, de ser así, tiene algún consejo sobre cómo restaurar el script (o sugerir una mejor solución para guardar en .idml de forma predeterminada)?
No hay motivo para utilizar un script en las ediciones más recientes de InDesign, ya que la función IDML se encuentra en Exportar. Simplemente vaya a File -> Export
elegir Formato: InDesign Markup (IDML). Si le preocupan los pasos continuos, aprenda a usar atajos, que es cmd+ E, luego elija Formato: InDesign Markup (IDML).
Si realmente desea usar el script, necesitará consultar la documentación para descubrir dónde está la diferencia, ya que Adobe es conocido por cambiar el nombre y las funciones de los objetos. Algunas buenas fuentes son:
Para aclarar, es posible que Adobe haya modificado sus objetos, como suelen hacer cuando lanzan una nueva versión y, mientras esto está integrado, podría trabajar en su secuencia de comandos y crear un validador para verificar si guardó como IDML. Si le preocupa si la exportación se realizó correctamente, luego de la exportación, vuelva a abrir la revisión del archivo o guárdelo como INDD para probar.
EDITAR:
También tenga en cuenta que para guardar un documento como IDML también puede usar la save as
función ubicada desde File -> Save As
o presionando Ctrl+Alt+Shift+S(Windows) o Command+Option+Shift+S(Mac OS)
Recientemente encontré una solución para mi problema. Ashraf Ali tiene una publicación de blog que aborda mi problema aquí: https://ashrafali.net/thoughts/saving-idml-files-automatically-on-close-of-indesign-document
// This InDesign Startup Script saves an IDML copy of the doc alongside the INDD
// Save it in your Startup Scripts folder. (See https://forums.adobe.com/thread/588551)
// Thanks to fabiantheblind http://graphicdesign.stackexchange.com/a/71736/67488 for the original script
// Modified by Ashraf (ashrafali.net) for comment & code clarity as well as functionality on close
#targetengine "session"
// Activate a Target Engine to make this work. See https://stackoverflow.com/questions/14061690/what-is-targetengine
app.addEventListener('afterOpen', function(myEvent) {
// Only run once a document is opened. See https://forums.adobe.com/message/5410190
if(app.layoutWindows.length == 0) return; // This is here to avoid a run on first start when there are no windows
var doc = app.activeDocument; // Get the current doc
// Switch to the event listener
// If you want it to work on every save, change variable to afterSave
app.addEventListener('afterClose', function(theEvent) {
$.writeln('saving'); // just to see whats going on
if (!doc.saved) {
// catch those possible mistakes
alert('Doc was never saved');
exit();
}
var aName = doc.name; // get the name
var newName = aName.replace("indd", "idml"); // replace the INDD to IDML
// Create a new File Object next to the INDD
var theFile = File(File(doc.filePath).fsName + "/" + newName);
// export
doc.exportFile(ExportFormat.INDESIGN_MARKUP, theFile, false);
});
});
Ahora estoy de vuelta en mi flujo de trabajo deseado de guardar automáticamente en IDML cuando guardo (o cierro) un archivo INDD.
M Khalid Junaid