<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://berniebernie.fr/mediawiki-1.37.1/index.php?action=history&amp;feed=atom&amp;title=Misc_Scripting</id>
	<title>Misc Scripting - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://berniebernie.fr/mediawiki-1.37.1/index.php?action=history&amp;feed=atom&amp;title=Misc_Scripting"/>
	<link rel="alternate" type="text/html" href="https://berniebernie.fr/mediawiki-1.37.1/index.php?title=Misc_Scripting&amp;action=history"/>
	<updated>2026-04-30T15:45:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://berniebernie.fr/mediawiki-1.37.1/index.php?title=Misc_Scripting&amp;diff=123&amp;oldid=prev</id>
		<title>Bernie: /* valette toshop avec pages fullscreen */</title>
		<link rel="alternate" type="text/html" href="https://berniebernie.fr/mediawiki-1.37.1/index.php?title=Misc_Scripting&amp;diff=123&amp;oldid=prev"/>
		<updated>2015-11-04T17:18:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;valette toshop avec pages fullscreen&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===Illustrator Angle Between===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
doc = app.activeDocument;&lt;br /&gt;
sel = doc.selection;&lt;br /&gt;
selLen = sel.length;&lt;br /&gt;
&lt;br /&gt;
// walk through each selected item&lt;br /&gt;
for (var s=0;s&amp;lt;selLen ;s++ )&lt;br /&gt;
	{&lt;br /&gt;
		if (sel[s].typename == &amp;quot;PathItem&amp;quot;){&lt;br /&gt;
			pnts = sel[s].pathPoints; &lt;br /&gt;
			siz = pnts.length;&lt;br /&gt;
			list =&amp;quot;&amp;quot;;&lt;br /&gt;
				for(a=0;a&amp;lt;siz;a++){&lt;br /&gt;
						previous = (a==0)?pnts[siz-2]:pnts[a-1];&lt;br /&gt;
						current = pnts[a];&lt;br /&gt;
						next = (a==(siz-1))?pnts[0]:pnts[a+1];&lt;br /&gt;
						previous = previous.anchor;&lt;br /&gt;
						current = current.anchor;&lt;br /&gt;
						next = next.anchor;&lt;br /&gt;
						vec1 = [previous[0]-current[0],previous[1]-current[1]];&lt;br /&gt;
						vec2 = [next[0]-current[0],next[1]-current[1]];&lt;br /&gt;
						angle = angleBetween(vec1,vec2);&lt;br /&gt;
						if(angle&amp;gt;10){&lt;br /&gt;
							alert(angle);&lt;br /&gt;
							var myCircle = new Path.Circle(new Point(current[0], current[1]), 20);&lt;br /&gt;
							}&lt;br /&gt;
					}&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
function angleBetween(v1,v2){&lt;br /&gt;
	//divide by zero if v1 or v2 is = 0&lt;br /&gt;
	scalar = v1[0]*v2[0]+v1[1]*v2[1];&lt;br /&gt;
	v1len = Math.sqrt(v1[0]*v1[0]+v1[1]*v1[1]);&lt;br /&gt;
	v2len = Math.sqrt(v2[0]*v2[0]+v2[1]*v2[1]);&lt;br /&gt;
	angleInRadians =Math.acos(scalar/(v1len*v2len));&lt;br /&gt;
	angleInDegree = angleInRadians*180/Math.PI;&lt;br /&gt;
	return angleInRadians;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== valette ===&lt;br /&gt;
* ecrit ce texte dans un fichier .bat (windows) tel quel, il va creer une page html quand tu le lancera, tu peut l&amp;#039;appeler comme tu veux genre lol.bat, mais il doit etre dans le mm repertoire que les images&lt;br /&gt;
* modifie le filter (la il prend les fichiers type test.56111.png, testfull.111.png) et le width (ca c&amp;#039;est pour regler la largeur des images, tu peut utiliser shift-left arrow / shift-right arrow pour les modifier dans la page&lt;br /&gt;
* la page se lance toute seule, mais des que tu rajoutera des images (si les noms changent) il faudra relancer le bat (qui ecrasera le fichier html)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@echo off&lt;br /&gt;
&lt;br /&gt;
set filter=&amp;quot;*.jpg&amp;quot;&lt;br /&gt;
set out_file=&amp;quot;out.html&amp;quot;&lt;br /&gt;
set percentwidth=90&lt;br /&gt;
&lt;br /&gt;
echo ^&amp;lt;html^&amp;gt;^&amp;lt;head^&amp;gt;^&amp;lt;style^&amp;gt;#cnt{width: %percentwidth%%%}^&amp;lt;/style^&amp;gt;^&amp;lt;script^&amp;gt; &amp;gt; %out_file%&lt;br /&gt;
echo|set /p=var imgs=[ &amp;gt;&amp;gt; %out_file%&lt;br /&gt;
for %%f in (%filter%) do echo|set /p=^&amp;#039;%%f^&amp;#039;, &amp;gt;&amp;gt; %out_file%&lt;br /&gt;
echo|set /p=&amp;#039;end.jpg&amp;#039;]; &amp;gt;&amp;gt; %out_file%&lt;br /&gt;
echo. &amp;gt;&amp;gt; %out_file%&lt;br /&gt;
echo widthMod =  %percentwidth%; &amp;gt;&amp;gt; %out_file%&lt;br /&gt;
for /F &amp;quot;skip=15 delims=&amp;quot; %%i in (%~0) do echo %%i &amp;gt;&amp;gt; %out_file%&lt;br /&gt;
%out_file%&lt;br /&gt;
GOTO :EOF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
min = 9999;    &lt;br /&gt;
max = 0;    &lt;br /&gt;
for(i=0;i&amp;lt;=imgs.length-2;i++){    &lt;br /&gt;
	ln = imgs[i].length;    &lt;br /&gt;
	min = Math.min(min, ln);    &lt;br /&gt;
	max = Math.max(max, ln);    &lt;br /&gt;
}    &lt;br /&gt;
var pages=[];    &lt;br /&gt;
pages.push([]); &lt;br /&gt;
token = 0;    &lt;br /&gt;
imagesToken = 0;    &lt;br /&gt;
for(i=0;i&amp;lt;=imgs.length-2;i++){&lt;br /&gt;
//console.log(imagesToken+&amp;#039; &amp;#039;+imgs[i])    &lt;br /&gt;
	if(imgs[i].length==min){    &lt;br /&gt;
		if(imagesToken==4){    &lt;br /&gt;
			pages.push([]);    &lt;br /&gt;
			token++;    &lt;br /&gt;
			imagesToken = 0;&lt;br /&gt;
		}&lt;br /&gt;
		pages[token].push(imgs[i]);    &lt;br /&gt;
		imagesToken++;    &lt;br /&gt;
	}else{    &lt;br /&gt;
		imagesToken = 0;&lt;br /&gt;
		if(pages[token].length != 0){&lt;br /&gt;
			pages.push([]);    &lt;br /&gt;
			token++; &lt;br /&gt;
		}&lt;br /&gt;
		pages[token].push(imgs[i]);    &lt;br /&gt;
		pages.push([]);    &lt;br /&gt;
		token++;    &lt;br /&gt;
	}    &lt;br /&gt;
}&lt;br /&gt;
//console.log(JSON.stringify(pages));&lt;br /&gt;
document.onkeydown = function(evt) {   &lt;br /&gt;
    evt = evt || window.event;   &lt;br /&gt;
    if (evt.keyCode  == 37) {   &lt;br /&gt;
    	if(evt.shiftKey){ &lt;br /&gt;
    		widthMod -= 5; &lt;br /&gt;
			document.getElementById(&amp;quot;cnt&amp;quot;).style.width = widthMod+&amp;quot;%&amp;quot;; &lt;br /&gt;
    	}else{ &lt;br /&gt;
			incdec(-1);  &lt;br /&gt;
		}   &lt;br /&gt;
    }else if(evt.keyCode  == 39){ &lt;br /&gt;
    	if(evt.shiftKey){ &lt;br /&gt;
    		widthMod += 5; &lt;br /&gt;
			document.getElementById(&amp;quot;cnt&amp;quot;).style.width = widthMod+&amp;quot;%&amp;quot;; &lt;br /&gt;
    	}else{ &lt;br /&gt;
			incdec(1);  &lt;br /&gt;
		}  &lt;br /&gt;
	}   &lt;br /&gt;
};   &lt;br /&gt;
function changepage(){   &lt;br /&gt;
	refreshImage();   &lt;br /&gt;
}   &lt;br /&gt;
function incdec(v){   &lt;br /&gt;
	var curValue = parseFloat(document.getElementById(&amp;quot;textbox&amp;quot;).value);   &lt;br /&gt;
	if(curValue == 1 &amp;amp;&amp;amp; v == -1){   &lt;br /&gt;
		v = 0;   &lt;br /&gt;
	}   &lt;br /&gt;
	document.getElementById(&amp;quot;textbox&amp;quot;).value = curValue + v;   &lt;br /&gt;
	refreshImage();   &lt;br /&gt;
}  &lt;br /&gt;
function refreshImage(){ &lt;br /&gt;
	page = parseFloat(document.getElementById(&amp;quot;textbox&amp;quot;).value-1); &lt;br /&gt;
	singleIm = document.getElementById(&amp;quot;imgsingle&amp;quot;); &lt;br /&gt;
	multiTbl = document.getElementById(&amp;quot;tableuh4&amp;quot;); &lt;br /&gt;
	if(pages[page].length == 1){ &lt;br /&gt;
		multiTbl.style.display = &amp;quot;none&amp;quot;; &lt;br /&gt;
		im = singleIm; &lt;br /&gt;
		im.style.display = &amp;quot;block&amp;quot;; &lt;br /&gt;
		im.src = pages[page][0] ; &lt;br /&gt;
		im.title = pages[page][0] ; &lt;br /&gt;
	}else{ &lt;br /&gt;
		multiTbl.style.display = &amp;quot;block&amp;quot;; &lt;br /&gt;
		singleIm.style.display = &amp;quot;none&amp;quot;; &lt;br /&gt;
		for(i=1;i&amp;lt;=4;i++){ &lt;br /&gt;
			im = document.getElementById(&amp;quot;img&amp;quot;+i); &lt;br /&gt;
			if(pages[page][i-1] != undefined){ &lt;br /&gt;
				im.style.visibility = &amp;#039;visible&amp;#039;; &lt;br /&gt;
				im.src = pages[page][i-1] ; &lt;br /&gt;
				im.title = pages[page][i-1]; &lt;br /&gt;
			}else{ &lt;br /&gt;
				im.style.visibility = &amp;#039;hidden&amp;#039;; &lt;br /&gt;
			} &lt;br /&gt;
		} &lt;br /&gt;
	} &lt;br /&gt;
} &lt;br /&gt;
window.onload = function(){refreshImage()}; &lt;br /&gt;
&amp;lt;/script&amp;gt; &lt;br /&gt;
&amp;lt;style&amp;gt; &lt;br /&gt;
.tbl{ &lt;br /&gt;
	width: 100%; &lt;br /&gt;
	display: block; &lt;br /&gt;
	table-layout: fixed; &lt;br /&gt;
} &lt;br /&gt;
td{ &lt;br /&gt;
	padding:10px; &lt;br /&gt;
	text-align: center; &lt;br /&gt;
} &lt;br /&gt;
img{ &lt;br /&gt;
	width:100%; &lt;br /&gt;
} &lt;br /&gt;
#cnt{ &lt;br /&gt;
	margin: auto; &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/style&amp;gt;    &lt;br /&gt;
&amp;lt;/head&amp;gt;   &lt;br /&gt;
&amp;lt;body&amp;gt;   &lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center;&amp;quot;&amp;gt;   &lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;textbox&amp;quot; name=&amp;quot;go&amp;quot; value=&amp;quot;1&amp;quot; onkeyUp=&amp;quot;changepage()&amp;quot;&amp;gt;   &lt;br /&gt;
	&amp;lt;button type=&amp;quot;button&amp;quot; onclick=&amp;quot;incdec(-1)&amp;quot;&amp;gt;&amp;lt;&amp;lt;&amp;lt;/button&amp;gt;   &lt;br /&gt;
	&amp;lt;button type=&amp;quot;button&amp;quot; onclick=&amp;quot;incdec(1)&amp;quot;&amp;gt;&amp;gt;&amp;gt;&amp;lt;/button&amp;gt;   &lt;br /&gt;
	&amp;lt;div id=&amp;quot;cnt&amp;quot;&amp;gt; &lt;br /&gt;
		&amp;lt;table id=&amp;quot;tableuh4&amp;quot; class=&amp;quot;tbl&amp;quot; align=&amp;quot;center&amp;quot; border=&amp;quot;0&amp;quot;&amp;gt; &lt;br /&gt;
			&amp;lt;tr&amp;gt; &lt;br /&gt;
				&amp;lt;td&amp;gt;&amp;lt;img id=&amp;quot;img1&amp;quot; src=&amp;quot;none.gif&amp;quot;&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
				&amp;lt;td&amp;gt;&amp;lt;img id=&amp;quot;img2&amp;quot; src=&amp;quot;none.gif&amp;quot;&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
			&amp;lt;/tr&amp;gt; &lt;br /&gt;
			&amp;lt;tr&amp;gt; &lt;br /&gt;
				&amp;lt;td&amp;gt;&amp;lt;img id=&amp;quot;img3&amp;quot; src=&amp;quot;none.gif&amp;quot;&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
				&amp;lt;td&amp;gt;&amp;lt;img id=&amp;quot;img4&amp;quot; src=&amp;quot;none.gif&amp;quot;&amp;gt;&amp;lt;/td&amp;gt; &lt;br /&gt;
			&amp;lt;/tr&amp;gt; &lt;br /&gt;
		&amp;lt;/table&amp;gt; &lt;br /&gt;
	&amp;lt;div style=&amp;quot;text-align: center; padding:10px&amp;quot;&amp;gt;   &lt;br /&gt;
		&amp;lt;img id=&amp;quot;imgsingle&amp;quot; src=&amp;quot;none.gif&amp;quot; style=&amp;quot;padding:0px&amp;quot;&amp;gt; &lt;br /&gt;
	&amp;lt;/div&amp;gt;			 &lt;br /&gt;
	&amp;lt;/div&amp;gt;   &lt;br /&gt;
&amp;lt;/div&amp;gt; &lt;br /&gt;
&amp;lt;/body&amp;gt;   &lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== valette toshop avec pages fullscreen ===&lt;br /&gt;
* enregistrer en .jsx dans le dossier ou ya les images&lt;br /&gt;
* a besoin d&amp;#039;un fichier qui s&amp;#039;appel template.psd (aussi dans le meme dossier) avec les calques 4 x 4 ou autre config positionnés et dans le bon ordre dans le chutier de calques&lt;br /&gt;
* cherche aussi un calque qui a le mot &amp;quot;full&amp;quot; dedans&lt;br /&gt;
&lt;br /&gt;
en gros ca doit etre comme ca:&lt;br /&gt;
&lt;br /&gt;
http://i.imgur.com/jOqRTXK.png&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
var debug = false;&lt;br /&gt;
&lt;br /&gt;
function e(s) {&lt;br /&gt;
    $.writeln(s);&lt;br /&gt;
}&lt;br /&gt;
function r(r){&lt;br /&gt;
    output = &amp;quot;&amp;quot;;&lt;br /&gt;
    for(i=0;i&amp;lt;=r.length-1;i++){&lt;br /&gt;
        for(j=0;j&amp;lt;=r[i].length-1;j++){&lt;br /&gt;
            output += r[i][j]+&amp;quot;\n&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
    output += &amp;quot;\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    return output;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pad(width, string, padding) {&lt;br /&gt;
    return (width &amp;lt;= string.length) ? string : pad(width, padding + string, padding)&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
function repositionLayer(incomingLayer,replacedLayerBounds) {&lt;br /&gt;
&lt;br /&gt;
    //resize and position a layer according to [xmax,ymax,xmin,ymin] which you get with layername.bounds() function&lt;br /&gt;
&lt;br /&gt;
    newBounds = incomingLayer.bounds;&lt;br /&gt;
    curBounds = replacedLayerBounds;&lt;br /&gt;
&lt;br /&gt;
    // if the template&amp;#039;s layers aren&amp;#039;t the same size as the incoming images, resize new images, and move them to where they should be&lt;br /&gt;
&lt;br /&gt;
    if (((curBounds[2] - curBounds[0]) != (newBounds[2] - newBounds[0])) &amp;amp;&amp;amp; ((curBounds[3] - curBounds[1]) != (newBounds[3] - newBounds[1]))) {&lt;br /&gt;
&lt;br /&gt;
        var newWidth = (curBounds[2] - curBounds[0]) / (newBounds[2] - newBounds[0]);&lt;br /&gt;
        var newHeight = (curBounds[3] - curBounds[1]) / (newBounds[3] - newBounds[1]);&lt;br /&gt;
        incomingLayer.resize(newWidth * 100, newHeight * 100);&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var oldCenter = [curBounds[0], curBounds[1]];&lt;br /&gt;
    var newCenter = [incomingLayer.bounds[0], incomingLayer.bounds[1]];&lt;br /&gt;
    incomingLayer.translate(oldCenter[0] - newCenter[0], oldCenter[1] - newCenter[1]); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
var units = app.preferences.rulerUnits;&lt;br /&gt;
app.preferences.rulerUnits = Units.PIXELS;&lt;br /&gt;
var script = new File($.fileName);&lt;br /&gt;
var template = new File(script.path + &amp;quot;/template.psd&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
if (!template.exists) {&lt;br /&gt;
    alert(&amp;quot;template not found with script: &amp;#039;&amp;quot; + script.path + &amp;quot;/template.psd&amp;#039;\n\nhurr durr&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
} else {&lt;br /&gt;
    var filter = prompt(&amp;quot;Files filter&amp;quot;,&amp;quot;*.jpg&amp;quot;);&lt;br /&gt;
    if(filter != null){&lt;br /&gt;
&lt;br /&gt;
        var docRefOrigin = app.open(template);&lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
        //figure out how many elements per page, grab their bounds, and check if there&amp;#039;s a layer for full page, get its bounds&lt;br /&gt;
&lt;br /&gt;
            var layers = docRefOrigin.artLayers;&lt;br /&gt;
            var numItems = 0;&lt;br /&gt;
            var page = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
            var exisitingbounds = [];&lt;br /&gt;
            var bigbounds = [];&lt;br /&gt;
&lt;br /&gt;
            var firstLayerPosition = -1;&lt;br /&gt;
&lt;br /&gt;
            for (i = layers.length-1; i&amp;gt;=0; i--) {&lt;br /&gt;
&lt;br /&gt;
                if (layers[i].kind != LayerKind.TEXT &amp;amp;&amp;amp; !layers[i].isBackgroundLayer &amp;amp;&amp;amp; !layers[i].allLocked) {&lt;br /&gt;
                    &lt;br /&gt;
                    firstLayerPosition = i;&lt;br /&gt;
&lt;br /&gt;
                    if(layers[i].name.toLowerCase().indexOf(&amp;quot;full&amp;quot;) != -1){&lt;br /&gt;
                        bigbounds = layers[i].bounds;&lt;br /&gt;
                    }else{&lt;br /&gt;
                        &lt;br /&gt;
                        numItems++;&lt;br /&gt;
                        exisitingbounds.push(layers[i].bounds);&lt;br /&gt;
                    }&lt;br /&gt;
                layers[i].remove();&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            &lt;br /&gt;
            if(bigbounds.length == 0){&lt;br /&gt;
                alert(&amp;quot;No layer found with &amp;#039;full&amp;#039; in its name found&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            exisitingbounds.reverse(); &lt;br /&gt;
&lt;br /&gt;
        //figure out pages pattern accordin to their name length for each page&lt;br /&gt;
&lt;br /&gt;
            var imagesFolder = new Folder(script.path);&lt;br /&gt;
            var files = imagesFolder.getFiles(filter);&lt;br /&gt;
            files.sort();&lt;br /&gt;
&lt;br /&gt;
            var min = 9999;    &lt;br /&gt;
            var max = 0;&lt;br /&gt;
            var imgs = files;&lt;br /&gt;
            for(i=0;i&amp;lt;=imgs.length-1;i++){    &lt;br /&gt;
                ln = imgs[i].name.length;&lt;br /&gt;
                min = Math.min(min, ln);    &lt;br /&gt;
                max = Math.max(max, ln);    &lt;br /&gt;
            }&lt;br /&gt;
            var pages=[];    &lt;br /&gt;
            pages.push([]); &lt;br /&gt;
            var token = 0;    &lt;br /&gt;
            var imagesToken = 0;    &lt;br /&gt;
            for(i=0;i&amp;lt;=imgs.length-1;i++){&lt;br /&gt;
                if(imgs[i].name.length==min){    &lt;br /&gt;
                    if(imagesToken==numItems){    &lt;br /&gt;
                        pages.push([]);    &lt;br /&gt;
                        token++;    &lt;br /&gt;
                        imagesToken = 0;&lt;br /&gt;
                    }&lt;br /&gt;
                    pages[token].push(imgs[i]);    &lt;br /&gt;
                    imagesToken++;    &lt;br /&gt;
                }else{    &lt;br /&gt;
                    imagesToken = 0;&lt;br /&gt;
                    if(pages[token].length != 0){&lt;br /&gt;
                        pages.push([]);    &lt;br /&gt;
                        token++; &lt;br /&gt;
                    }&lt;br /&gt;
                    pages[token].push(imgs[i]);    &lt;br /&gt;
                    pages.push([]);    &lt;br /&gt;
                    token++;    &lt;br /&gt;
                }    &lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        // process array of files, for each element of pages (either a size n*4 where n!=1 bounds array or size 1*4 bounds array)&lt;br /&gt;
        tmp = &amp;quot;&amp;quot;;&lt;br /&gt;
        for(i=0;i&amp;lt;pages.length;i++){&lt;br /&gt;
&lt;br /&gt;
            &lt;br /&gt;
            docRef = docRefOrigin.duplicate();&lt;br /&gt;
            app.activeDocument = docRef;&lt;br /&gt;
            layers = docRef.artLayers;&lt;br /&gt;
&lt;br /&gt;
            //for each layer, check if it&amp;#039;s text and if is, add page number (only on the first text layer though)&lt;br /&gt;
&lt;br /&gt;
                for (j = 0; j &amp;lt; layers.length; j++) {&lt;br /&gt;
                    var curLay = layers[j];&lt;br /&gt;
                    if (curLay.kind == LayerKind.TEXT &amp;amp;&amp;amp; !curLay.allLocked) {&lt;br /&gt;
                        curLay.textItem.contents += &amp;quot; &amp;quot; + (i+1);&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
            // go through subitems in pages: open, copy, close, paste&lt;br /&gt;
&lt;br /&gt;
                for (j = 0; j &amp;lt; pages[i].length; j++) {&lt;br /&gt;
                    var curImage = pages[i][j];&lt;br /&gt;
                        if (curImage != undefined) {&lt;br /&gt;
                            var img = new File();&lt;br /&gt;
                            var imgRef = app.open(curImage);&lt;br /&gt;
                            app.activeDocument = imgRef;&lt;br /&gt;
                            app.activeDocument.flatten()&lt;br /&gt;
                            app.activeDocument.selection.selectAll()&lt;br /&gt;
                            app.activeDocument.selection.copy()&lt;br /&gt;
                            app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);&lt;br /&gt;
                            app.activeDocument = docRef;&lt;br /&gt;
                            var newLayer = app.activeDocument.paste();&lt;br /&gt;
                            newLayer.move(docRef.layers[firstLayerPosition+j], ElementPlacement.PLACEAFTER);&lt;br /&gt;
                            curBounds = (pages[i].length == 1)?bigbounds:exisitingbounds[j];&lt;br /&gt;
                            repositionLayer(newLayer,curBounds);&lt;br /&gt;
                        }&lt;br /&gt;
                    &lt;br /&gt;
                }&lt;br /&gt;
                &lt;br /&gt;
            // save 2 versions and close&lt;br /&gt;
&lt;br /&gt;
                if(!debug){&lt;br /&gt;
                    &lt;br /&gt;
                    //jpg&lt;br /&gt;
                    saveFolder = new Folder(imagesFolder + &amp;quot;/output&amp;quot;);&lt;br /&gt;
                    saveFolder.create();&lt;br /&gt;
                    saveFile = new File(imagesFolder + &amp;quot;/output/page.&amp;quot; + pad(4, i+1, &amp;quot;0&amp;quot;) + &amp;quot;.jpg&amp;quot;);&lt;br /&gt;
                    var saveOptions = new JPEGSaveOptions();&lt;br /&gt;
                    saveOptions.embedColorProfile = true;&lt;br /&gt;
                    saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;&lt;br /&gt;
                    saveOptions.quality = 12;&lt;br /&gt;
                    docRef.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);&lt;br /&gt;
&lt;br /&gt;
                    //psd&lt;br /&gt;
                    saveFile = new File(imagesFolder + &amp;quot;/output/psd_page.&amp;quot; + pad(4, i+1, &amp;quot;0&amp;quot;) + &amp;quot;.psd&amp;quot;);&lt;br /&gt;
                    saveOptions = new PhotoshopSaveOptions();&lt;br /&gt;
                    docRef.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);&lt;br /&gt;
&lt;br /&gt;
                    &lt;br /&gt;
                }&lt;br /&gt;
                docRef.close(SaveOptions.DONOTSAVECHANGES);&lt;br /&gt;
        }&lt;br /&gt;
        docRefOrigin.close(SaveOptions.DONOTSAVECHANGES);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
app.preferences.rulerUnits = units;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== valette toshop ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function e(s) {&lt;br /&gt;
    $.writeln(s);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pad(width, string, padding) {&lt;br /&gt;
    return (width &amp;lt;= string.length) ? string : pad(width, padding + string, padding)&lt;br /&gt;
}&lt;br /&gt;
var units = app.preferences.rulerUnits;&lt;br /&gt;
app.preferences.rulerUnits = Units.PIXELS;&lt;br /&gt;
var script = new File($.fileName);&lt;br /&gt;
var template = new File(script.path + &amp;quot;/template.psd&amp;quot;);&lt;br /&gt;
if (!template.exists) {&lt;br /&gt;
    alert(&amp;quot;template not found with script: &amp;#039;&amp;quot; + script.path + &amp;quot;/template.psd&amp;#039;\n\nhurr durr&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
    var docRefOrigin = app.open(template);&lt;br /&gt;
    var imagesFolder = new Folder(script.path);&lt;br /&gt;
    var files = imagesFolder.getFiles(&amp;quot;*.jpg&amp;quot;);&lt;br /&gt;
    files.sort();&lt;br /&gt;
    /*for(i=0;i&amp;lt;=files.length;i++){&lt;br /&gt;
        e(files[i]);&lt;br /&gt;
    }*/&lt;br /&gt;
    var layers = docRefOrigin.artLayers;&lt;br /&gt;
    var numItems = 0;&lt;br /&gt;
    var page = 0;&lt;br /&gt;
&lt;br /&gt;
    //figure out how many elements per page&lt;br /&gt;
    for (i = 0; i &amp;lt; layers.length; i++) {&lt;br /&gt;
&lt;br /&gt;
        if (layers[i].kind != LayerKind.TEXT &amp;amp;&amp;amp; !layers[i].isBackgroundLayer &amp;amp;&amp;amp; !layers[i].allLocked) {&lt;br /&gt;
            numItems++;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    var pages = files.length / numItems;&lt;br /&gt;
    //e(numItems + &amp;quot; &amp;gt; &amp;quot; + files.length + &amp;quot; = &amp;quot; + pages);&lt;br /&gt;
    //pages = 3;&lt;br /&gt;
    for (j = 0; j &amp;lt;= pages; j++) {&lt;br /&gt;
        docRef = docRefOrigin.duplicate();&lt;br /&gt;
        app.activeDocument = docRef;&lt;br /&gt;
        layers = docRef.artLayers;&lt;br /&gt;
        //for each layer, check if it&amp;#039;s text and if is, add page number (only on the first text layer though&lt;br /&gt;
&lt;br /&gt;
        for (i = 0; i &amp;lt; layers.length; i++) {&lt;br /&gt;
            var curLay = layers[i];&lt;br /&gt;
            if (curLay.kind == LayerKind.TEXT &amp;amp;&amp;amp; !curLay.allLocked) {&lt;br /&gt;
                curLay.textItem.contents += &amp;quot; &amp;quot; + (j + 1);&lt;br /&gt;
&lt;br /&gt;
                //if it&amp;#039;s not a text layer (and not last layer), grab the corresponding image out the file list, flatten, copy it, paste it&lt;br /&gt;
                //in the template, resize it to the template layer size, delete template layer, move on&lt;br /&gt;
&lt;br /&gt;
            } else if (curLay.kind != LayerKind.TEXT &amp;amp;&amp;amp; !curLay.allLocked &amp;amp;&amp;amp; !curLay.isBackgroundLayer) {&lt;br /&gt;
                curBounds = curLay.bounds;&lt;br /&gt;
&lt;br /&gt;
                imgPath = files[j * numItems + i - (layers.length - numItems - 1)];&lt;br /&gt;
&lt;br /&gt;
                e(imgPath);&lt;br /&gt;
                if (imgPath != undefined) {&lt;br /&gt;
                    var img = new File();&lt;br /&gt;
                    var imgRef = app.open(imgPath);&lt;br /&gt;
&lt;br /&gt;
                    app.activeDocument = imgRef;&lt;br /&gt;
                    app.activeDocument.flatten()&lt;br /&gt;
                    app.activeDocument.selection.selectAll()&lt;br /&gt;
                    app.activeDocument.selection.copy()&lt;br /&gt;
                    app.activeDocument.close(SaveOptions.DONOTSAVECHANGES);&lt;br /&gt;
                    app.activeDocument = docRef;&lt;br /&gt;
                    var newLayer = app.activeDocument.paste();&lt;br /&gt;
                    newLayer.move(curLay, ElementPlacement.PLACEBEFORE);&lt;br /&gt;
                    newBounds = newLayer.bounds;&lt;br /&gt;
                    curLay.remove();&lt;br /&gt;
&lt;br /&gt;
                    // if the template&amp;#039;s layers aren&amp;#039;t the same size as the incoming images, resize new images, and move them to where they should be&lt;br /&gt;
                    if (((curBounds[2] - curBounds[0]) != (newBounds[2] - newBounds[0])) &amp;amp;&amp;amp; ((curBounds[3] - curBounds[1]) != (newBounds[3] - newBounds[1]))) {&lt;br /&gt;
&lt;br /&gt;
                        var newWidth = (curBounds[2] - curBounds[0]) / (newBounds[2] - newBounds[0]);&lt;br /&gt;
                        var newHeight = (curBounds[3] - curBounds[1]) / (newBounds[3] - newBounds[1]);&lt;br /&gt;
                        newLayer.resize(newWidth * 100, newHeight * 100);&lt;br /&gt;
&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    var oldCenter = [curBounds[0], curBounds[1]];&lt;br /&gt;
                    var newCenter = [newLayer.bounds[0], newLayer.bounds[1]];&lt;br /&gt;
                    newLayer.translate(oldCenter[0] - newCenter[0], oldCenter[1] - newCenter[1]);&lt;br /&gt;
                }else{&lt;br /&gt;
                    curLay.visible = false;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        //save documents as PSD and JPG&lt;br /&gt;
        saveFile = new File(imagesFolder + &amp;quot;/output&amp;quot; + pad(4, j, &amp;quot;0&amp;quot;) + &amp;quot;.jpg&amp;quot;);&lt;br /&gt;
        var saveOptions = new JPEGSaveOptions();&lt;br /&gt;
        saveOptions.embedColorProfile = true;&lt;br /&gt;
        saveOptions.formatOptions = FormatOptions.STANDARDBASELINE;&lt;br /&gt;
        //saveOptions.matte = MatteType.NONE; &lt;br /&gt;
        saveOptions.quality = 12;&lt;br /&gt;
        docRef.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);&lt;br /&gt;
&lt;br /&gt;
        saveFile = new File(imagesFolder + &amp;quot;/output&amp;quot; + pad(4, j, &amp;quot;0&amp;quot;) + &amp;quot;.psd&amp;quot;);&lt;br /&gt;
        saveOptions = new PhotoshopSaveOptions();&lt;br /&gt;
        docRef.saveAs(saveFile, saveOptions, true, Extension.LOWERCASE);&lt;br /&gt;
&lt;br /&gt;
        docRef.close(SaveOptions.DONOTSAVECHANGES);&lt;br /&gt;
    }&lt;br /&gt;
    docRefOrigin.close(SaveOptions.DONOTSAVECHANGES);&lt;br /&gt;
}&lt;br /&gt;
app.preferences.rulerUnits = units;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bernie</name></author>
	</entry>
</feed>