#target photoshop // ------------------------------------------------------- ZMIENNE GLOBALNE ---------------------------------------------------- var opcje = new PDFOpenOptions; opcje.bitsPerChannel = BitsPerChannelType.EIGHT; opcje.cropPage = CropToType.MEDIABOX; opcje.mode = OpenDocumentMode.CMYK; opcje.usePageNumber = true; opcje.resolution = 300; opcje.supressWarnings = true; var saveOpts = new PDFSaveOptions; saveOpts.layers = false; var presOpts = new PresentationOptions; presOpts.presentation = false; presOpts.PDFFileOptions = saveOpts; var strona = 1; var listPages, listRanges = []; // -------------------------------------------------- KLASY --------------------------------------------------------- function Range (start, end, singleSided) { this.singleSided = singleSided; this.start = start; this.end = end; } function Page (isPrevEmpty, isEmpty, isNextEmpty){ this.isPrevEmpty = isPrevEmpty; this.isEmpty = isEmpty; this.isNextEmpty = isNextEmpty; } // ------------------------------------------------------- FUNKCJE -------------------------------------------------------------------- function isEven(value){ if (value%2 == 0) return true; else return false; }//koniec function openFiles (file, openOpts, startPage){ var docName = file.name; var docPath = file.path; var condition = true; var docFolder = new Folder(docPath + "/" + docName); try { docFolder.create(); } catch (e){ alert(e); } while (condition == true){ try{ openOpts.page = startPage; app.open(File(file) , openOpts); startPage++; } catch (e){ condition = false; startPage = startPage -1; //console.log(startPage); break; } } return docFolder; }//koniec function checkEmpty (pageNum, docFolder){ var isEmpty, currentPage; var folderUtils = new Folder(docFolder + "/robocze"); folderUtils.create(); currentPage = new Page(); var tValPrev, tValCurr, tValNext = []; try{ tValCurr[0] = app.documents[pageNum].channels[0].histogram[0]; tValCurr[1] = app.documents[pageNum].channels[0].histogram[128]; tValCurr[2] = app.documents[pageNum].channels[0].histogram[255]; tValNext[0] = app.documents[(pageNum+1)].channels[0].histogram[0]; tValNext[1] = app.documents[(pageNum+1)].channels[0].histogram[128]; tValNext[2] = app.documents[(pageNum+1)].channels[0].histogram[255]; if( tValCurr[0] > 0 && tValCurr[1] > 0 && tValCurr[2] > 0){ currentPage.isEmpty = false; } else { currentPage.isEmpty = true; } if( tValNext[0] > 0 && tValNext[1] > 0 && tValNext[2] > 0){ currentPage.isNextEmpty = false; } else { currentPage.isNextEmpty = true; } if (typeof listPages[(pageNum-1)] === 'undefined'){ currentPage.isPrevEmpty = true; } else { currentPage.isPrevEmpty = listPages[(pageNum-1)].isNextEmpty; listPages.push(currentPage); app.documents[pageNum].saveAs( File( folderUtils + "/" + pageNum ), saveOpts, true, Extension.LOWERCASE); // console.log("strona " + pageNum + " - " ); } } catch (e){ if (typeof e === RangeError){ currentPage.isNextEmpty = "END"; } else { throw e; } return 0; }//koniec function checkRanges (){ var testedPage, currentEnd, currentStart; var currentRange = new Range(); for (var b = 0; b < listPages.length; b++){ testedPage = listPages[b]; var bIsEven = isEven(b+1); //currentStart = currentRange.start; //currentEnd = currentRange.end; //poczÄ…tek tablicy listPages if (b == 0 && testedPage.isEmpty == false && testedPage.isNextEmpty == true){ currentRange.singleSided = true; currentRange.start = b; currentRange.end = b; continue; } else if (b == 0 && testedPage.isEmpty == false && testedPage.isNextEmpty == false){ currentRange.singleSided = false; currentRange.start = b; currentRange.end = b+1; continue; } else { continue; } // puste if (testedPage.isEmpty == true){ continue; } //jednostronne if (bIsEven == true && testedPage.isEmpty == false && testedPage.isNextEmpty == true){ if (currentRange.singleSided == false){ listRanges.push(currentRange); currentRange = new Range(); currentRange.singleSided = true; currentRange.start = b; currentRange.end = b; } currentRange.end = b; continue; } // dwustronne if (testedPage.isEmpty == false && testedPage.isNextEmpty == false){ if (currentRange.singleSided == true && testedPage.isPrevEmpty == true){ listRanges.push(currentRange); currentRange = new Range(); currentRange.singleSided = false; currentRange.start = b; currentRange.end = b; } currentRange.end = b; continue; } if (testedPage.isNextEmpty == "END"){ listRanges.push(currentRange); } } } }//koniec function saveRanges (docFolder, listRanges){ var folderSingleSided = new Folder(docFolder + "/jednostronne"); folderSingleSided.create(); var folderDoubleSided = new Folder (docFolder + "/dwustronne"); folderDoubleSided.create(); var utilFolder = docFolder + "/robocze"; for (var s = 0; s < listRanges.length; s++){ var saveStart = listRanges[s].start; var saveEnd = listRanges[s].end; var saveSingleSided = listRanges[s].singleSided; var inputFiles = []; for (var d = 0; d <= (saveEnd - saveStart); d++){ var pg = saveStart+d; inputFiles[d] = utilFolder + "/" + pg + ".pdf"; } if (saveSingleSided == true){ app.makePDFPresentation (inputFiles, File (folderSingleSided + s), presOpts); } else { app.makePDFPresentation (inputFiles, File (folderDoubleSided + s), presOpts); } inputFiles = []; } }//koniec //-------------------------------------------------------------- SKRYPT ------------------------------------------------------------ var filesList = openDialog(); alert(filesList); openFiles (filesList, opcje, strona); var folder = filesList.path; for (var q = 0; q < app.documents.length; q++){ checkEmpty (q, folder); } checkRanges (); saveRanges (folder, listRanges);