Copy link to clipboard
Copied
Hello there
I was wondering how to acces the items, in an Layer, and export them as Jpegs.
I tried using app.selection[i].itemLayer.getPageItems, but it doesn't work.
This is what my Indesign File looks like:
Also you see there a group, which needs to be exported as one jpg, but im not really sure how to achieve that.
Does anyone know?
THANKS A LOT!
Hello @Laubender
Yes that would have been a possible way. But defining things in Code isn't the goal.
I came up with this Version which works perfectly fine:
var allLayers = doc.layers;
if (allLayers.length > 0) {
for (var i = 0; allLayers.length > i; i++) {
var allElements = allLayers[i].pageItems;
var layerName = allLayers[i].name;
if (layerName.indexOf("Immo") || layerName.indexOf("Stellen")) {
if (allElements.length > 0) {
for (var j = 0;
...
My Script also checks if the "Ebene 1" in the Screenshot contains Immo or Stellen. If thats true, then the Images get exportet. All other files which don't have a Layer which contains Immo or Stellen, the Items won't get exported as a Jpg :).
Copy link to clipboard
Copied
This is what I came up with, but doesn't work:
var allLayers = doc.layers;
if (allLayers.length > 0) {
for (var i = 0; allLayers.length > i; i++)
{
var allElements = allLayers[i].getPageItems;
if(allElements.length > 0 ) {
for (var j = 0; allElements.length > j; j++) {
var element = allElements[i];
var elementName = element.name;
var path = imageFolder + "/" + elementName + ".jpg";
var savedFile = new File(path);
element.exportFile(ExportFormat.jpg, savedFile);
}
}
}
}
I'm not sure why but I'm getting an error that allLayers[i].getPageItems :
Has anyone a different approch to this?
Copy link to clipboard
Copied
As you have discovered, "getPageItens" is not a method for any DOM object, including the Layer object.
Copy link to clipboard
Copied
Turn off the visibilty of all other objects and then export this Page to JPG, or for better Quality export as PDF/X-4, open that in Photoshop and save as JPG.
But t why JPG? With text and graphic it is not a good idea anyway.
Copy link to clipboard
Copied
Ih I was to hide the other content, the whole Page would be exportet, which isn't the Goal. The goal is to export each Item in the Layer with the size it is.
Exporting as an jpg because I need to have the pdf's and the Graphics as an jpg. To import it after to PS is not the goal.
But right now I'm a little bit clueless how to make this.
Copy link to clipboard
Copied
Hi schlindibus,
you could loop this array:
var pageItemsArray = doc.layers.itemByName("Ebene 1").pageItems.everyItem().getElements();
Note: Layers have document scope. So you collect items on pages and pasteboards.
You do not collect items on parent pages ("Musterseiten").
The array above contains an array of first level page items.
Nested items, like items in groups, are not explicitely stored.
The Layers panel has spread scope.
It only shows all the items of a single spread.
Regards,
Uwe Laubender
( ACP )
Copy link to clipboard
Copied
Hello @Laubender
Yes that would have been a possible way. But defining things in Code isn't the goal.
I came up with this Version which works perfectly fine:
var allLayers = doc.layers;
if (allLayers.length > 0) {
for (var i = 0; allLayers.length > i; i++) {
var allElements = allLayers[i].pageItems;
var layerName = allLayers[i].name;
if (layerName.indexOf("Immo") || layerName.indexOf("Stellen")) {
if (allElements.length > 0) {
for (var j = 0; allElements.length > j; j++) {
var element = allElements[j];
var elementName = element.name;
var path = imageFolder + "/" + elementName + ".jpg";
var savedFile = new File(path);
element.exportFile(ExportFormat.jpg, savedFile);
}
}
}
}
doc.close(SaveOptions.NO);
}
Thanks for your replies!
Copy link to clipboard
Copied
My Script also checks if the "Ebene 1" in the Screenshot contains Immo or Stellen. If thats true, then the Images get exportet. All other files which don't have a Layer which contains Immo or Stellen, the Items won't get exported as a Jpg :).
Copy link to clipboard
Copied
Hi schlindibus,
also see into app.jpegExportPreferences to define the details of the JPEG export. See DOM description at:
https://www.indesignjs.de/extendscriptAPI/indesign-latest/#JPEGExportPreference.html#d1e415512
Regards,
Uwe Laubender
( ACP )
Copy link to clipboard
Copied
Hi @schlindibus Here are the methods and properties for the Layer object:
https://www.indesignjs.de/extendscriptAPI/indesign-latest/#Layer.html#d1e199876
There is also .allPageItems, which gets groups and pageitems within groups.
Here .allPageItems returns 5 items, and .pageItems returns 2 items:
var l = app.documents[0].activeLayer
var api = l.allPageItems
var pi = l.pageItems
$.writeln("All Page Items: " + api.length)
//returns 5 items
$.writeln("Page Items: " + pi.length)
//returns 2 items