Facebook
From Sweltering Lemur, 3 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 132
  1. #target photoshop
  2. // ------------------------------------------------------- ZMIENNE GLOBALNE ----------------------------------------------------
  3. var opcje = new PDFOpenOptions;
  4. opcje.bitsPerChannel = BitsPerChannelType.EIGHT;
  5. opcje.cropPage = CropToType.MEDIABOX;
  6. opcje.mode = OpenDocumentMode.CMYK;
  7. opcje.usePageNumber = true;
  8. opcje.resolution = 300;
  9. opcje.supressWarnings = true;
  10.  
  11. var saveOpts = new PDFSaveOptions;
  12. saveOpts.layers = false;
  13.  
  14. var presOpts = new PresentationOptions;
  15. presOpts.presentation = false;
  16. presOpts.PDFFileOptions = saveOpts;
  17.  
  18.  
  19. var strona = 1;
  20.  
  21. var listPages, listRanges = [];
  22. // -------------------------------------------------- KLASY ---------------------------------------------------------
  23. function Range (start, end, singleSided) {
  24.     this.singleSided = singleSided;
  25.     this.start = start;
  26.     this.end = end;
  27.     }  
  28.  
  29. function Page (isPrevEmpty, isEmpty, isNextEmpty){
  30.     this.isPrevEmpty = isPrevEmpty;
  31.     this.isEmpty = isEmpty;
  32.     this.isNextEmpty = isNextEmpty;
  33.     }
  34.  
  35. // ------------------------------------------------------- FUNKCJE --------------------------------------------------------------------
  36.  
  37. function isEven(value){
  38.     if (value%2 == 0)
  39.         return true;
  40.     else
  41.         return false;
  42. }//koniec
  43.  
  44. function openFiles (file, openOpts, startPage){
  45.    
  46.     var docName = file.name;
  47.     var docPath = file.path;
  48.     var condition = true;
  49.    
  50.     var docFolder = new Folder(docPath + "/" + docName);
  51.     try {
  52.         docFolder.create();
  53.         }
  54.     catch (e){
  55.         alert(e);
  56.         }
  57.    
  58.             while (condition == true){
  59.             try{
  60.                 openOpts.page = startPage;
  61.                 app.open(File(file) , openOpts);
  62.                 startPage++;
  63.                 }
  64.             catch (e){
  65.                 condition = false;
  66.                 startPage = startPage -1;
  67.                 //console.log(startPage);
  68.                 break;
  69.                 }
  70.         }
  71.     return docFolder;
  72. }//koniec
  73.  
  74. function checkEmpty (pageNum, docFolder){
  75.    
  76.     var isEmpty, currentPage;
  77.    
  78.     var folderUtils = new Folder(docFolder + "/robocze");
  79.     folderUtils.create();
  80.    
  81.    currentPage = new Page();
  82.     var tValPrev, tValCurr, tValNext = [];
  83.    
  84. try{
  85.     tValCurr[0] = app.documents[pageNum].channels[0].histogram[0];
  86.     tValCurr[1] = app.documents[pageNum].channels[0].histogram[128];
  87.     tValCurr[2] = app.documents[pageNum].channels[0].histogram[255];
  88.     tValNext[0] = app.documents[(pageNum+1)].channels[0].histogram[0];
  89.     tValNext[1] = app.documents[(pageNum+1)].channels[0].histogram[128];
  90.     tValNext[2] = app.documents[(pageNum+1)].channels[0].histogram[255];
  91.    
  92.     if( tValCurr[0] > 0 && tValCurr[1] > 0 && tValCurr[2] > 0){
  93.         currentPage.isEmpty = false;
  94.         }
  95.     else {
  96.         currentPage.isEmpty = true;
  97.         }
  98.    
  99.      if( tValNext[0] > 0 && tValNext[1] > 0 && tValNext[2] > 0){
  100.         currentPage.isNextEmpty = false;
  101.         }
  102.     else {
  103.         currentPage.isNextEmpty = true;
  104.         }
  105.    
  106.     if (typeof listPages[(pageNum-1)] === 'undefined'){
  107.         currentPage.isPrevEmpty = true;
  108.         }
  109.     else {
  110.         currentPage.isPrevEmpty = listPages[(pageNum-1)].isNextEmpty;
  111.        
  112.     listPages.push(currentPage);
  113.     app.documents[pageNum].saveAs( File( folderUtils + "/" + pageNum ), saveOpts, true, Extension.LOWERCASE);
  114.    // console.log("strona " + pageNum + " - " );
  115.    }
  116. }
  117.  
  118. catch (e){
  119.     if (typeof e === RangeError){
  120.     currentPage.isNextEmpty = "END";
  121.     }
  122.     else {
  123.         throw e;
  124.         }
  125.    
  126.     return 0;
  127.  }//koniec  
  128.  
  129. function checkRanges (){
  130.    
  131.        
  132.     var testedPage, currentEnd, currentStart;
  133.     var currentRange = new Range();
  134.    
  135.     for (var b = 0; b < listPages.length; b++){
  136.         testedPage = listPages[b];
  137.         var bIsEven = isEven(b+1);
  138.         //currentStart = currentRange.start;
  139.         //currentEnd = currentRange.end;
  140.        
  141.         //początek tablicy listPages
  142.         if (b == 0 && testedPage.isEmpty == false && testedPage.isNextEmpty == true){
  143.             currentRange.singleSided = true;
  144.             currentRange.start = b;
  145.             currentRange.end = b;
  146.             continue;
  147.             }
  148.         else if (b == 0 && testedPage.isEmpty == false && testedPage.isNextEmpty == false){
  149.             currentRange.singleSided = false;
  150.             currentRange.start = b;
  151.             currentRange.end = b+1;
  152.             continue;
  153.             }
  154.         else {
  155.             continue;
  156.             }
  157.        
  158.         // puste
  159.         if (testedPage.isEmpty == true){
  160.             continue;
  161.             }
  162.        
  163.         //jednostronne
  164.         if (bIsEven == true && testedPage.isEmpty == false && testedPage.isNextEmpty == true){
  165.             if (currentRange.singleSided == false){
  166.                 listRanges.push(currentRange);
  167.                 currentRange = new Range();
  168.                 currentRange.singleSided = true;
  169.                 currentRange.start = b;
  170.                 currentRange.end = b;
  171.                 }
  172.             currentRange.end = b;
  173.             continue;
  174.             }
  175.         // dwustronne
  176.          if (testedPage.isEmpty == false && testedPage.isNextEmpty == false){
  177.             if (currentRange.singleSided == true && testedPage.isPrevEmpty == true){
  178.                 listRanges.push(currentRange);
  179.                 currentRange = new Range();
  180.                 currentRange.singleSided = false;
  181.                 currentRange.start = b;
  182.                 currentRange.end = b;
  183.                 }
  184.             currentRange.end = b;
  185.             continue;
  186.             }
  187.         if (testedPage.isNextEmpty == "END"){
  188.             listRanges.push(currentRange);
  189.             }
  190.     }
  191. }
  192.     }//koniec
  193.  
  194. function saveRanges (docFolder, listRanges){
  195.    
  196.    
  197.     var folderSingleSided = new Folder(docFolder + "/jednostronne");
  198.     folderSingleSided.create();
  199.     var folderDoubleSided = new Folder (docFolder + "/dwustronne");
  200.     folderDoubleSided.create();
  201.     var utilFolder = docFolder + "/robocze";
  202.    
  203.    
  204.    
  205.     for (var s = 0; s < listRanges.length; s++){
  206.         var saveStart = listRanges[s].start;
  207.         var saveEnd = listRanges[s].end;
  208.         var saveSingleSided = listRanges[s].singleSided;
  209.         var inputFiles = [];
  210.        
  211.         for (var d = 0; d <= (saveEnd - saveStart); d++){
  212.             var pg = saveStart+d;
  213.             inputFiles[d] = utilFolder + "/" + pg + ".pdf";
  214.            }
  215.         if (saveSingleSided == true){    
  216.          app.makePDFPresentation (inputFiles, File (folderSingleSided + s), presOpts);
  217.          }
  218.         else {
  219.          app.makePDFPresentation (inputFiles, File (folderDoubleSided + s), presOpts);
  220.          }
  221.         inputFiles = [];
  222.         }
  223.    
  224.     }//koniec
  225.  
  226. //-------------------------------------------------------------- SKRYPT ------------------------------------------------------------
  227. var filesList = openDialog();
  228. alert(filesList);
  229. openFiles (filesList, opcje, strona);
  230. var folder = filesList.path;
  231. for (var q = 0; q < app.documents.length; q++){
  232.     checkEmpty (q, folder);
  233.     }
  234. checkRanges ();
  235. saveRanges (folder, listRanges);
  236.  
  237.  
  238.