/***
* Сергей Исаев, г. Тюмень, 2012 год
* Версия 0.86 ( PC only )
* © АНО «Тюменская область сегодня»
*
* Скрипт сохраняет оригинальные картинки в папку site/color_images,
* сохраняет все картинки в формате TIFF в папку ФОТО В ПОЛОСУ,
* пересвязывает картинки на созданные TIFF
*
* Файлы записываются в папку 192.168.11.240/oneday/site/img/ из WindowsXP
* Файлы записываются в папку /Volumes/oneday/site/img/ из MacOS
* ресурсы должны существовать!
Журнал изменений:
- Существующие файлы не перезаписываются, а увеличивается индекс фото
- Если номер не указан, то Номер и Полоса запрашиваются повторно
- Сохраняется под Специальным расширением 'tif3', чтобы скриптом менять обратно.
- При запросе номера по нажатию клавиши «Esc» завершает обработку скрипта
- Не изменяется цветовое пространство файла
Требования:
- Windows
- ImageMagic
*/
/*
Поиск всех невнедренных изображений
Перебор всех найденных изображений
Если изобржаение не в папке ФОТО в ПОЛОСУ или не в формате TIFF, то Обработать.
*/
function myCreateProgressPanel(srcMaxValue, srcMaxWidth) {
myProgressPanel = new Window("window", "Экспорт файлов на сервер в формате TIF");
with (myProgressPanel) {
myProgressPanel.myProgressBar = add("progressbar", [12, 12, srcMaxWidth, 24], 0, srcMaxValue);
}
return myProgressPanel;
}
// Настройка экспорта JPG.
// Возможно не нужны, если копировать оригиналы
app.jpegExportPreferences.exportResolution = 200;
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.HIGH;
var stringLog = '';
// Платформозависимый путь к папке назначения для Mac и PC
// Если Macintosh, то Mac
if (0 == $.os.indexOf("Macintosh")) {
// var CONST_SITE_FOLDER = "/Volumes/oneday/site/color_images/";
var CONST_SITE_FOLDER = "~/Desktop/color_images/";
var CONST_TIF_FOLDER = "~/Desktop/ФОТО В ПОЛОСУ/";
var CONST_SLASH = "/";
} else {
// иначе PC
var CONST_SITE_FOLDER = "\\\\192.168.11.3\\oneday\\site\\color_images\\";
var CONST_TIF_FOLDER = "\\\\192.168.11.4\\paper\\ФОТО В ПОЛОСУ\\";
var CONST_SLASH = "\\";
}
// Не копировать фотки из Фото в полосу и Оригиналов изображений
var reProcessed = new RegExp("(ФОТО В ПОЛОСУ)");
var reTIFF = new RegExp("(\.tiff|\.psd)");
// Получает Активную страницу
var activePage = app.activeWindow.activePage;
// Получает Активный документ
var myDocument = app.activeDocument
/*
* Начинает обраотку полосы
*/
// Запрашивает номер и полосу
var issueAndPage = prompt( 'Пожалуйста, введите номер и полосу' ,
'000-00' ,
'Запрос номера и полосы');
while (parseInt(issueAndPage) < 1) {
issueAndPage = prompt( 'Пожалуйста, введите НОМЕР и ПОЛОСУ' ,
'000-00' ,
'Запрос номера и полосы');
}
// Если нажат Escape, то завершить скрипт
if (!issueAndPage) exit();
// Извлекает номер выпуска
issueNumber = parseInt(issueAndPage);
issueFolder = '';
if (issueNumber < 10) {
issueFolder = '00' + issueNumber + '/';
} else if (issueNumber < 100) {
issueFolder = '0' + issueNumber + '/';
} else {
issueFolder = '' + issueNumber + '/';
}
// Надо запоминать номер фотки, чтобы фотки не повторялись!!!!
var maxProgressBarValue = activePage.allGraphics.length*20;
var myProgressPanel = myCreateProgressPanel(maxProgressBarValue, 400);
myProgressPanel.show();
for (var iCounter = 0; iCounter < activePage.allGraphics.length; iCounter++) {
var someGraphics = activePage.allGraphics[iCounter];
var someLink = someGraphics.itemLink;
var sourceImageFilename = someLink.filePath;
var filenameArray = someLink.name.split ('.');
var fileExt = filenameArray[filenameArray.length-1].toLowerCase();
// Изменяет значение прогресс бара
myProgressPanel.myProgressBar.value = iCounter*20;
var colorFile = new File(someLink.filePath);
if (reProcessed.test(someLink.filePath) && reTIFF.test(someLink.filePath)) {
stringLog += "\n" + someLink.name + ' уже сохранен.';
} else if (someLink.status == LinkStatus.LINK_EMBEDDED) {
stringLog += "\n" + someLink.name + ' внедрен.';
} else if (!colorFile.exists) {
stringLog += "\n" + someLink.name + ' файл НЕ НАЙДЕН.';
} else {
//Получает номер картинки
var imgFolder = new Folder(CONST_TIF_FOLDER+issueFolder);
if (imgFolder.exists) {
imgFiles = imgFolder.getFiles(issueAndPage+'*');
imgNumber = imgFiles.length + 1;
} else {
imgFolder.create();
imgNumber = 1;
}
// Создает папку для исходника
var colorFolder = new Folder(CONST_SITE_FOLDER+issueFolder);
if (!colorFolder.exists) {
colorFolder.create();
}
// Проверяется тип файла
if ( (fileExt == 'tif') || (fileExt == 'tiff') || (fileExt == 'psd') || (fileExt == 'pdf') || (fileExt == 'eps')) {
// Просто скопировать
destFileExt = '.' + fileExt;
doConvert = false;
} else {
// Скопировать и преобразовать в TIF
destFileExt = '.tif';
doConvert = true;
}
// Экспортирует файл в папку ФОТО В ПОЛОСУ
paperFile = new File(CONST_TIF_FOLDER+issueFolder+issueAndPage+'-'+imgNumber+destFileExt);
while (paperFile.exists) {
imgNumber++;
paperFile = new File(CONST_TIF_FOLDER+issueFolder+issueAndPage+'-'+imgNumber+destFileExt);
}
colorFile.copy(paperFile);
myProgressPanel.myProgressBar.value = iCounter *20 + 1;
// Сохраняет исходник
var colorFile = new File(someLink.filePath);
if (colorFile.exists) {
colorFile.copy(CONST_SITE_FOLDER+issueFolder+issueAndPage+'-'+imgNumber+'.'+fileExt);
}
myProgressPanel.myProgressBar.value = iCounter *20 + 2;
// Пересвязывает картинку экспортированным файлом
someLink.relink(paperFile);
// Если надо конвертировать, то конвертировать
if (doConvert) {
// Создать скрипт конвертации
scriptFile = new File('C:\\Users\\Public\\'+issueAndPage+'-'+imgNumber+'.cmd');
scriptFile.encoding = 'UTF-8';
scriptFile.open('w');
scriptFile.writeln("echo OFF");
scriptFile.writeln("chcp 65001");
// scriptFile.writeln('set srcfile='+colorFile.fsName);
// scriptFile.writeln('set dstfile='+paperFile.fsName);
scriptFile.writeln('convert "'+colorFile.fsName+'" -compress None "'+paperFile.fsName+'"');
scriptFile.writeln('forfiles /P C:\\Users\\Public\\ /S /M *.cmd /D -2 /C "cmd /c /del /q @path"');
// scriptFile.writeln('echo OPERATION IS DONE %dstfile%');
// scriptFile.writeln('pause');
scriptFile.close();
// Запустить скрипт
scriptFile.execute();
}
/*
// Создание файла со специальным расширением
paperFile = new File(CONST_TIF_FOLDER+issueFolder+issueAndPage+'-'+imgNumber+'.tiftmp');
colorFile.copy(paperFile);
*/
// Перегоняет файл в TIF
// paperFile.execute();
// В зависимости от someLink.linkType можно задать разные перекодировки изображений
// Цикл с задержкой для преобразования JPG в TIF. (Фото 5МБ примерно на 15 секунд)
var secondsToSleep = Math.floor(colorFile.length/500/17);
for (var i = 3; i < 20; i++) {
$.sleep(secondsToSleep);
myProgressPanel.myProgressBar.value = iCounter *20 + i;
}
stringLog += "\n" + someLink.name + ' сохранен.';
}
}
myProgressPanel.myProgressBar.value = maxProgressBarValue;
alert('Экспорт фотографий на сервер в формате TIFF завершен.'+"\n"+stringLog);
//alert(stringLog);