Skip to main content
Known Participant
December 21, 2020
Answered

Export images to folders

  • December 21, 2020
  • 2 replies
  • 705 views

Hi there,

     I need to to export images from a 100 page Indesign catalogue.

I need the images from page 1 to be exported in folder 001, from page 2 to folder 002, from page 3 to folder 003  etc. upto all pages to their format (just a copy of them).

Any script that do the job ?

Could you help me please?

Thanks is advance.

This topic has been closed for replies.
Correct answer xxxxxxxxxxxxxxxxxxxxyyyy

Hi,

this script will create a folder "exported_images" in the same folder where your Indesign file is saved. The images then will be copied into the subfolders "001", "002", ...

#targetengine "imageExporter"

var mydoc = app.activeDocument;
var pages = mydoc.pages;
var allGraphics = null;
var mainFolder_String = decodeURI(mydoc.filePath + "/exported_images");
var mainFolder_Folder = new Folder(mainFolder_String);
var pageFolder = null;
var folderNumber = "";

if(!mainFolder_Folder.exists){
	mainFolder_Folder.create();
}

var progressbar = pbar();
progressbar.show();
progressbar.prog.maxvalue = pages.length;

for(var p = 0; p < pages.length; p++){
	progressbar.prog.value = p;
	progressbar.update();
	
	if(p +1 >= 100){
		folderNumber = p + 1;
	} else if (p +1 >= 10){
		folderNumber = "0" + (p + 1);
	} else {
		folderNumber = "00" + (p +1);
	}
	
	pageFolder = new Folder(mainFolder_String + "/" + folderNumber);
	
	if(!pageFolder.exists){
		pageFolder.create();
	}
	
	allGraphics = pages[p].allGraphics;
	
	for(var g = 0; g < allGraphics.length; g++){
		
		var currentGraphic = new File(decodeURI(allGraphics[g].itemLink.filePath));
		
		currentGraphic.copy(mainFolder_String + "/" + folderNumber + "/" + allGraphics[g].itemLink.name);
	}
}

progressbar.close();
alert("Image export completed");

function pbar(){
	var w = Window.find("palette", "progress");
	if(w != null){
		return w;
	}
	
	w = new Window("palette", "progress");
	w.prog = w.add("progressbar", undefined, 0, 100);
	w.prog.preferredSize.width = 200;
	
	return w;
}

 

2 replies

xxxxxxxxxxxxxxxxxxxxyyyy
Participating Frequently
December 23, 2020

Hi Uwe,

thanks for the heads-up. I guess I will handle these issues in the easiest and laziest way by using try{} catch().

 

Another issue may occur when there are two different images on the same page that are linked from different sources but have the same name, e.g. c:\image_001.jpg, e:\image_001.jpg. In this case there would only be one "image_001.jpg" at the end because the other one got overwritten. But for the moment I will assume that this is not the case and ignore it for now.

 

#targetengine "imageExporter"

var mydoc = app.activeDocument;
var pages = mydoc.pages;
var allGraphics = null;
var mainFolder_String = decodeURI(mydoc.filePath + "/exported_images");
var mainFolder_Folder = new Folder(mainFolder_String);
var pageFolder = null;
var folderNumber = "";

if(!mainFolder_Folder.exists){
	mainFolder_Folder.create();
}

var progressbar = pbar();
progressbar.show();
progressbar.prog.maxvalue = pages.length;

for(var p = 0; p < pages.length; p++){
	progressbar.prog.value = p;
	progressbar.update();
	
	if(p +1 >= 100){
		folderNumber = p + 1;
	} else if (p +1 >= 10){
		folderNumber = "0" + (p + 1);
	} else {
		folderNumber = "00" + (p +1);
	}
	
	pageFolder = new Folder(mainFolder_String + "/" + folderNumber);
	
	if(!pageFolder.exists){
		pageFolder.create();
	}
	
	allGraphics = pages[p].allGraphics;
	
	for(var g = 0; g < allGraphics.length; g++){
		try {
			var currentGraphic = new File(decodeURI(allGraphics[g].itemLink.filePath));
			
			currentGraphic.copy(mainFolder_String + "/" + folderNumber + "/" + allGraphics[g].itemLink.name);	
		} catch (err) {
			
		}
	}
}

progressbar.close();
alert("Image export completed");

function pbar(){
	var w = Window.find("palette", "progress");
	if(w != null){
		return w;
	}
	
	w = new Window("palette", "progress");
	w.prog = w.add("progressbar", undefined, 0, 100);
	w.prog.preferredSize.width = 200;
	
	return w;
}

 

xxxxxxxxxxxxxxxxxxxxyyyy
Participating Frequently
December 21, 2020

Hi,

this script will create a folder "exported_images" in the same folder where your Indesign file is saved. The images then will be copied into the subfolders "001", "002", ...

#targetengine "imageExporter"

var mydoc = app.activeDocument;
var pages = mydoc.pages;
var allGraphics = null;
var mainFolder_String = decodeURI(mydoc.filePath + "/exported_images");
var mainFolder_Folder = new Folder(mainFolder_String);
var pageFolder = null;
var folderNumber = "";

if(!mainFolder_Folder.exists){
	mainFolder_Folder.create();
}

var progressbar = pbar();
progressbar.show();
progressbar.prog.maxvalue = pages.length;

for(var p = 0; p < pages.length; p++){
	progressbar.prog.value = p;
	progressbar.update();
	
	if(p +1 >= 100){
		folderNumber = p + 1;
	} else if (p +1 >= 10){
		folderNumber = "0" + (p + 1);
	} else {
		folderNumber = "00" + (p +1);
	}
	
	pageFolder = new Folder(mainFolder_String + "/" + folderNumber);
	
	if(!pageFolder.exists){
		pageFolder.create();
	}
	
	allGraphics = pages[p].allGraphics;
	
	for(var g = 0; g < allGraphics.length; g++){
		
		var currentGraphic = new File(decodeURI(allGraphics[g].itemLink.filePath));
		
		currentGraphic.copy(mainFolder_String + "/" + folderNumber + "/" + allGraphics[g].itemLink.name);
	}
}

progressbar.close();
alert("Image export completed");

function pbar(){
	var w = Window.find("palette", "progress");
	if(w != null){
		return w;
	}
	
	w = new Window("palette", "progress");
	w.prog = w.add("progressbar", undefined, 0, 100);
	w.prog.preferredSize.width = 200;
	
	return w;
}

 

Community Expert
December 22, 2020

Hi crazyPanda,

note: One should always test if a graphic has an itemLink at all; images could be pasted to the layout through the clipboard.

And of course property status of itemLink should show LinkStatus.NORMAL.

 

Regards,
Uwe Laubender

( ACP )