Скрипт не выводит обрез при экспорте в PDF и зависает в другой части скрипта

Итак, следующий скрипт — это модифицированная версия скрипта, который я нашел здесь . Его цель состоит в том, чтобы:

  1. Экспортируйте текущую страницу в формате PDF, используя параметр HQ Print по умолчанию.
  2. Проверьте на кровотечение. Если он есть, обрез будет включен в экспорт.
  3. Извлеките содержимое второго текстового фрейма (в порядке сверху вниз), которое он находит на странице.
  4. Извлеките первые два слова этого текста, поменяйте их порядок, добавьте тире между ними, а затем добавьте его к имени файла.
  5. Экспорт файла

На данный момент единственное, что мне удалось заставить работать, это пункт № 1. По какой-то причине этот сценарий не будет экспортировать обрез, что бы я ни делал, хотя собственная документация InDesign предполагает, что то, что у меня есть, должно работать. Кроме того, я не смог понять, как правильно обрабатывать пункты 3 и 4; Я попытался изменить функцию GetDate, чтобы справиться с этим, но это не сработало (как видно из закомментированных строк).

Итак, гуру сценариев StackExchange, что я делаю неправильно? Любая помощь будет высоко оценена. Спасибо!

* Примечание. На самом деле мне не нужно добавлять дату к имени файла; Я просто использовал функцию GetDate в качестве контейнера для кода извлечения имени, так как эта функция уже была в коде.

var scriptName = "Export current page to PDF - 1.0";  

Main();  

//===================================== FUNCTIONS  ======================================  
function Main() {  
if (app.documents.length == 0) ErrorExit("Please open a document and try again.", true);  
var doc = app.activeDocument;  

if (app.activeWindow.constructor.name != "LayoutWindow") ErrorExit("Unable to get page number. Quit story editor.", true);  

var page = app.activeWindow.activePage; 

with (app.pdfExportPreferences){
pageRange = page.name;
viewPDF = true;
bleedBottom = app.activeDocument.documentPreferences.
documentBleedBottomOffset;
bleedTop = app.activeDocument.documentPreferences.documentBleedTopOffset;
bleedInside = app.activeDocument.documentPreferences.
documentBleedInsideOrLeftOffset;
bleedOutside = app.activeDocument.documentPreferences.
documentBleedOutsideOrRightOffset;
//If any bleed area is greater than zero, then export the bleed.
if(bleedBottom == 0 && bleedTop == 0 && bleedInside == 0 &&
    bleedOutside == 0){
    useDocumentBleedWithPDF = true;
    }
    else{
            useDocumentBleedWithPDF = false;
    }
}


var fileName = doc.name.replace(/\.indd$/, "") + "_" + GetDate() + ".pdf";  
var file = new File("~/Desktop/" + fileName);

var myExportPreset = app.pdfExportPresets.item("[High Quality Print]");
alert (myExportPreset);
doc.exportFile(ExportFormat.pdfType, file, false, myExportPreset);  
}  
//--------------------------------------------------------------------------------------------------------------------------------------------------------  
function GetDate() {  
//var page = app.activeWindow.activePage; 
//var nameFrame = page.textFrames.item(1).contents;
//var employeeName = nameFrame.substr(2)

    var date = new Date();  
    if ((date.getYear() - 100) < 10) {  
  var year = "0" + new String((date.getYear() - 100));  
   }  
 else {  
   var year = new String((date.getYear() - 100));  
   }  
  var dateString = (date.getMonth() + 1) + "-" + date.getDate() + "-" + year + "_" + date.getHours() + "-" + date.getMinutes() + "-" + date.getSeconds();  
return dateString;  
}  

Ответы (2)

Что касается кровотечения, вы почти у цели. Вы инвертировали логику в тесте на обтекание, и вам не следует использовать предустановку, поскольку вы уже устанавливаете настройки в своем withблоке pdfExportPreferences.

Возможно, если вы хотите использовать предустановку, вам следует загрузить предустановку перед блоком with, но я этого не проверял.

Так:

//If any bleed area is greater than zero, then export the bleed.
if(bleedBottom == 0 && bleedTop == 0 && bleedInside == 0 &&
    bleedOutside == 0){

Должно быть:

 if(bleedBottom != 0 && bleedTop != 0 && bleedInside != 0 &&
        bleedOutside != 0){

И:

var myExportPreset = app.pdfExportPresets.item("[High Quality Print]");
alert (myExportPreset);
doc.exportFile(ExportFormat.pdfType, file, false, myExportPreset);

Должно быть:

doc.exportFile(ExportFormat.pdfType, file, false);
забавный факт: панель сценариев в ID будет следовать за ярлыками папок. Перетащите ссылку из папки User scripts на любую другую папку.
Что это означает с точки зрения самого сценария? Извините, я не знаю никаких сценариев; то, что мне удалось выше, было результатом нескольких часов исследований и разочарований.
О, это аккуратно! И на самом деле очень полезно, так как я хотел бы сохранить этот скрипт на сервере для использования всей моей командой.
Ничего. У меня просто есть папка «Исследования» на рабочем столе, на которую я добавил ссылку. Мне нравится, когда мои сценарии и т. д. находятся в более удобном месте для доступа и резервного копирования. Таким образом, они не будут похоронены в папке программ.
Теперь он поддерживает настройки из предустановки «[Высококачественная печать]», как и предполагалось.

Вам необходимо продублировать предустановку «[Высококачественная печать]» и внести любые изменения, поскольку, в отличие от настройки pageRange, настройки выпуска за обрез будут переопределены предустановкой ExportPreset. Когда закончите, вы можете удалить свой дублированный пресет:

var myExportPreset = app.pdfExportPresets.item("[High Quality Print]").duplicate();
myExportPreset.useDocumentBleedWithPDF = true;

doc.exportFile(ExportFormat.PDF_TYPE, myFile, false, myExportPreset );
myExportPreset.remove();