Skip to main content
Inspiring
April 17, 2019
Answered

Export pages to jpg with individual filenames (from photo caption in slug)

  • April 17, 2019
  • 2 replies
  • 9598 views

Hi Guys

I am wanting to export multiple pages of a INDD file to JPG and name the files based on a caption generated from the image on each page. (the caption appears in the slug area. Previously we have been doing this manually. We do Team and Portrait Photography, there is the option to use 'Sports Photo Automation' but this would leave me with much larger file sizes. I have seen a couple of posts relating to this but they don't seem to be specific enough and i am no scripter.

Thanks for any advice, apologies if this has been answered before.

This topic has been closed for replies.
Correct answer darrellpones

This script seems to run when I use the original destination and I cant find the files. When I use the commented out line with a destination of c:\output it doesn't run. I am new to this can anyone advise me of the correct syntax to chose a destination?


if (app.documents.length != 0){

var myDoc = app.activeDocument;

MakeJPEGfile();

} else {

alert("Please open a document and try again.");

}

function myPS() {

try {

return myDoc.selection[0].appliedParagraphStyle;

} catch (e) {

alert("Place cursor to text with paragraph style for filenames");

exit();

}

}

function MakeJPEGfile() {

app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.high;

app.jpegExportPreferences.exportResolution = 72;

app.jpegExportPreferences.jpegExportRange = ExportRangeOrAllPages.exportRange;

app.findGrepPreferences = null;

app.findGrepPreferences.appliedParagraphStyle = myPS();

var f = myDoc.findGrep();

for (var myCounter = 0; myCounter < f.length; myCounter++) {

try {

var curPage = f[myCounter].parentTextFrames[0].parentPage;

if (curPage.appliedSection.name != "") {

curPage.appliedSection.name = "";

}

var objName = f[myCounter].contents.replace(/ /g,"_").toLowerCase();

app.jpegExportPreferences.pageString = curPage.name;

//var myFilePath = "~/C:\output/" + myPageName + ".jpg";

var myFilePath = myDoc.filePath + "/" + objName + ".jpg"; //export to a folder of the current document

var myFile = new File(myFilePath);

myDoc.exportFile(ExportFormat.jpg, myFile, false);

} catch(e) {

//pasteboard?

}

}

}

2 replies

Community Expert
April 17, 2019

Hi Darrell,

if the caption is made with InDesign's Caption function it might be that the image's container frame is grouped with the text frame that holds the caption text.

To get the group you could access the allGraphics array of a page or you could follow a specific link in the Links collection and climb the parent tree until you find a group. Then check for the contents of a text frame that is part of the group.

Regards,
Uwe

Inspiring
April 18, 2019

Hi Guys

Thansk for your consideration

I found a script here

https://indesignsecrets.com/topic/export-pages-to-jpg-with-custom-filenames

The PNG script works fine (doesn't name files though) but the JPG one seems to work (as it takes time to run) but I can't find the output?

My Captions are not grouped to the image, I will make the text style colour transparent once its up and running correctly

Its a 60 poage document but I will have to do thousands of these over the year so want to streamline the process as much as possible

Inspiring
October 4, 2023

Still working here. You need to have a flashing text cursor in the text, and the text has to have a unique text style applied to it. For example 'filename export style' (it doesn't have to be a specifc style name). I assume if you have used for example Head 2 style elsewhere on the page the scripr would get confused?


Hi Guys, does anyone have an idea how I could add a line to this script to export using bleed settings? Would also love to be able to choose a destination. Cheers Darrell. 


Assume it would be an extra line around here
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.high;
app.jpegExportPreferences.exportResolution = 72;
app.jpegExportPreferences.jpegExportRange = ExportRangeOrAllPages.exportRange;

Community Expert
April 17, 2019

Hi Darrell,

How are the captions generated for the image, is there only a single image on a page?

-Manan

-Manan