Not sure where I got this one from… pdf_export.jsx
#target indesign;
//~ try {export_to_pdf (app.books.item (get_book ()))}
//~ catch (e) {alert (e.message + "\r(line " + e.line + ")")};
var item = get_item ();
var params = get_params (item);
export_to_pdf (item, params)
function export_to_pdf (item, params)
{
var pdf_export_settings = app.pdfExportPreferences.properties;
app.pdfExportPreferences.viewPDF = params.view;
item.exportFile (ExportFormat.pdfType, File (params.name), false, app.pdfExportPresets.item (params.preset));
app.pdfExportPreferences.properties = pdf_export_settings;
}
function get_params (b)
{
var app_presets = app.pdfExportPresets.everyItem().name;
var w = new Window ("dialog", "Export PDF", undefined, {closeButton: false})
w.alignChildren = "right";
w.main = w.add ("panel");
w.main.alignChildren = "left";
w.main.name = w.main.add ("group");
w.main.name.prompt = w.main.name.add ("statictext", undefined, "PDF name:");
w.main.name.prompt.preferredSize.width = 60;
var pdf_name = w.main.name.add ("edittext", undefined, b.extractLabel ("name") || decodeURI(String(b.fullName)).replace (/\.ind[db]$/, ".pdf"));
pdf_name.characters = 40;
pdf_name.active = true;
w.main.pr = w.main.add ("group");
w.main.pr.prompt = w.main.pr.add ("statictext", undefined, "Preset:");
w.main.pr.prompt.preferredSize.width = 60;
var presets = w.main.pr.add ("dropdownlist", undefined, app_presets);
presets.selection = presets.find (b.extractLabel ("preset")) || 0;
var view = w.main.add ("checkbox", undefined, "\u00A0View PDF after export");
view.value = b.extractLabel ("view");
w.buttons = w.add ("group");
w.buttons.add ("button", undefined, "OK", {name: "ok"});
w.buttons.add ("button", undefined, "Cancel", {name: "cancel"});
if (w.show() == 1)
{
b.insertLabel ("preset", presets.selection.text);
b.insertLabel ("name", pdf_name.text);
b.insertLabel ("view", String (view.value));
w.close();
return {name: pdf_name.text, preset: presets.selection.text, view: view.value}
}
else
{w.close(); exit ()}
}
function get_item ()
{
if (app.documents.length > 0)
{
// If .fullName fails the documents has never been saved and we can't do anything with it.
try {app.documents[0].fullName; return app.documents[0]}
catch (_) {exit ()};
}
else
{
switch (app.books.length)
{
case 0: alert ("Please open a document or a book."); exit ();
case 1: return app.books[0];
default: return pick_book ();
}
}
}
function pick_book ()
{
var w = new Window ("dialog", "Select a book");
w.alignChildren = "right";
var g = w.add ("group");
var list = g.add ("listbox", undefined, app.books.everyItem().name);
list.minimumSize.width = 250;
list.selection = 0;
var b = w.add ("group");
b.add ("button", undefined, "OK", {name: "ok"})
b.add ("button", undefined, "Cancel", {name: "cancel"})
if (w.show () == 1)
return app.books.item (list.selection.text);
else
exit ();
}
... View more