Скрипт для сохранения слоев Photoshop в PDF

Статус рабочей области:
Стоимость:3 000 рублей
Срок выполнения:15 дней
Варианты оплаты:Планируется использовать Безопасную сделку
Дата публикации:2024-12-12 23:19
Обновлено:2024-12-12 23:43
Был на сайте:2024-12-18 21:06

Скрипт для сохранения слоев Photoshop в PDF

 
Задача

Скрипт на Adobe ExtendScript CS6

1. Скрипт вызывается для текущего открытого файла PSD в Photoshop (могут быть другие открытые файлы PSD, которые не должны мешать процессу). В начальном диалоге спрашивает, хотим ли мы что-то добавить к имени файла (см. пункт 4); там же кнопка запуска скрипта на исполнение.
2. Скрипт экспортирует каждый слой (независимо от того, видимый он, или нет) в файл jpg в папке, в которой лежит и сам текущий файл PSD, давая им названия 00.jpg, 01.jpg, ..., начиная с самого нижнего слоя (текущий путь назначать по умолчанию, изменять не предлагать) [В Photoshop такой скрипт уже есть, export layers to files, меня устроит, если его часть будет использована]
3. Скрипт объединяет полученные файлы jpg в многостраничный документ PDF, где первая страница будет получена из файла 00.jpg и всех последующих по номерам
4. Скрипт сохраняет полученный из слоёв файл PDF в текущую папку, имя по умолчанию - Notes (не спрашивать), с возможностью добавить символы к названию с клавиатуры в окне (маска...

Видеть полную информацию и оставлять заявки могут только авторизованные пользователи.
Исполнитель по этому заданию выбран.
Stanislav Ricci
Специализация: Программирование и IT
  • 3 000 руб15 дней
#target photoshop

app.bringToFront();

function main() {
// Проверяем, открыт ли документ
if (!app.documents.length) {
alert("Нет открытых документов.");
return;
}

var doc = app.activeDocument;

// Получаем путь и имя текущего файла
var docPath = doc.path;
var baseName = "Notes";

// Создаем диалоговое окно
var dlg = new Window('dialog', 'Сохранение слоев в PDF');
dlg.orientation = 'column';
dlg.alignChildren = ['fill','top'];

var grp = dlg.add('group');
grp.orientation = 'row';
grp.alignChildren = ['left','center'];
grp.add('statictext', undefined, 'Добавить к имени файла:');
var addName = grp.add('edittext', undefined, '');
addName.characters = 20;

dlg.add('button', undefined, 'Запустить', {name: 'ok'});
dlg.add('button', undefined, 'Отмена', {name: 'cancel'});

if (dlg.show() != 1) {
return;
}

var suffix = addName.text.trim();
if (suffix.length > 0) {
baseName += suffix;
}

var pdfName = baseName + ".pdf";
var pdfFile = new File(docPath + "/" + pdfName);

// Папка для временных JPG
var tempFolder = new Folder(docPath + "/temp_layers_jpg");
if (!tempFolder.exists) {
tempFolder.create();
}

// Функция для экспорта слоев
function exportLayersToJPG() {
var layers = getAllLayers(doc);
// Сортируем слои снизу вверх
layers = layers.reverse();

var jpgFiles = [];

for (var i = 0; i < layers.length; i++) {
var layer = layers[i];
doc.activeLayer = layer;

// Скрываем все слои
toggleAllLayers(false);
// Отображаем текущий слой
layer.visible = true;

// Создаем дубликат документа с одним видимым слоем
var dup = doc.duplicate();
dup.flatten();

Примеры моих работ


Оставлять заявки могут только авторизованные пользователи.