- #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);