[ID CC-CC2022] Crop Marks при экспорте в PDF из скрипта

  • Автор темы Автор темы yozhic
  • Дата начала Дата начала

yozhic

Участник
Топикстартер
Сообщения
9
Реакции
0
Доброго здоровья!
Помогите, пожалуйста, решить задачку. Я взял за основу свободный скрипт Питера Карэла Export to PDF и немного переделал его для своих нужд. Из существенного: добавил в диалог ввод диапазона страниц и чекбокс Crop Marks. Первое работает, второе — не хочет. Нашёл в справочнике параметр app.pdfExportPreferences.cropMarks, передаю его ID, но при экспорте в PDF он, по-видимому, перекрывается другим каким-то более приоритетным, и не срабатывает. Куда и как дальше копать ума не приложу. Прошу братской помощи. Скрипт прикрепляю, строки для меток реза пометил комментариями.
 

Вложения

перекрывается другим каким-то более приоритетным
Похоже, тем, что указан в стиле экспорта, который выбран в том же диалоговом окне.
 
Последнее редактирование:
тем, что указан в стиле экспорта
Да, кажется им, но как к нему подкопаться я не додумался, вот в этом и вопрос. К настройкам документа, как я понял, есть доступ через exrtactLabel, например doc.extractLabel ("preset"), но я не смог разобраться как узнать какой label у меток реза, если он вообще есть (метод научного тыка не помог).
 
Да, кажется им, но как к нему подкопаться я не додумался, вот в этом и вопрос. К настройкам документа, как я понял, есть доступ через exrtactLabel, например doc.extractLabel ("preset"), но я не смог разобраться как узнать какой label у меток реза, если он вообще есть (метод научного тыка не помог).

это не то совсем

самое простое что вы можете сделать - создать руками пресет вывода PDF с включенными метками, и использовать его
 
Последнее редактирование:
  • Спасибо
Реакции: yozhic и Gad
Вы сначала выставляете настройку Crop Marks а потом перебиваете её пресетом. Где же логика? :)
viewPDF и pageRange независимые настройки (легко убедиться, после снятия/установки этих параметров к имени пресета не добаляется modifed), потому и получается их менять в то время как Crop Marks жестко связан с пресетом. Не совсем понятно зачем вообще в скрипте это задавать если используется пресет в котором можно это настроить сразу?
Но если уж хочется, то определитесь с логикой, либо Вы задаете все параметры сами, либо используете пресет...
 
Последнее редактирование:
  • Спасибо
Реакции: yozhic
через новый пресет
Ага, спасибо, я уже думал об этом, можно было бы вообще создать несколько рабочих пресетов с нужными настройками и обращаться к ним. Но я рассуждал немного по-другому.

При использовании стандартного диалога Экспорт в заголовке пресета отображается, например, [Smallest file size] (modified) и в этом (modified) запоминаются все отличия от выбранного стандартного пресета. Т.е. получается, что к документу прикрепляется его собственный «пресет» (modified), который сохраняется вместе с ним. Я хотел докопаться именно до этого встроенного «пресета» документа, чтобы избежать создания множества пресетов-шаблонов. И что интересно, диапазон страниц — это тоже настройка встроенного (modified), но её ID позволяет менять при помощи app.pdfExportPreferences.pageRange, и viewPDF позволяет, а cropMarks не позволяет. Не пойму что за логика? Пресет то один и тот же, но одну настройку менять можно, а другую почему нельзя? Где-то я, наверное, ошибаюсь в рассуждениях, где-то путаюсь.
 
viewPDF и pageRange независимые настройки (легко убедиться, после снятия/установки этих параметров к имени пресета не добаляется modifed)
Ага, вот, точно, я туда не посмотрел, поторопился. Теперь понятно, кажется.
 
Метки реза только через пресет, получается
Нет :) не только :) Можно пресет не использовать
pItem.exportFile (ExportFormat.pdfType, outfile, false);
Но тогда либо Вы задете все необходимые настройки скриптом, либо будут модифицированы Вашими настройками последние использованные/умолчательные настройки экспорта.
 
  • Спасибо
Реакции: yozhic
ну, поменять то можно. но это немного нетривиально. нужно создать новый пресет в скрипте, затем скопировать все свойства выбранного, а затем уже поменять на выбранное в диалоге.

в общем быстрее создать пресет с установками как надо imho
 
Последнее редактирование:
Ой, спасибо, мужики, теперь мне это всё надо переварить-усвоить.
Прошу модератора пока не закрывать тему, подождать немножко.
в общем быстрее создать пресет с установками как надо imho
Эх, не успел Ваш код скопировать, страницу перезагрузил :) Ну, да ладно, наверное действительно не надо в этом случае ничего мудрить, а сделать проще.
 
код старый какой-то, не совсем адекватный. идея в том, что берем свойства пресета, создаем их копию через var props = eval(preset.properties.toSource()), в этой копии меняем что нам нужно (в том числе название), и добавляем новый пресет var exportPDFExportPreset=app.pdfExportPresets.add(props); - его и используем
 
  • Спасибо
Реакции: yozhic
@Skvoznyak, спасибо ещё раз, попробую сегодня после работы, может дотумкаю.
 
Можно попробовать "обмануть судьбу" :)

Не по теме:
"индусы" обзавидуются :)

Код:
try {
    app.pdfExportPreferences.viewPDF   = false;
    app.pdfExportPreferences.pageRange = "1";
    pItem.exportFile (ExportFormat.pdfType, outfile, false, app.pdfExportPresets.item (pParams.preset));
} catch (e) {};
app.pdfExportPreferences.viewPDF   = pParams.view;
app.pdfExportPreferences.pageRange = pParams.pages;
app.pdfExportPreferences.cropMarks = pParams.crop;
var outfile = File (pParams.output_folder + pParams.name);
pItem.exportFile (ExportFormat.pdfType, outfile, false);
 
  • Спасибо
Реакции: yozhic
перенести выше конечно
А я вначале «пониже» попробовал. После замены имени у меня в нагрузку создался пдф со старым именем и с 1й страничкой. Но теперь то всё чётко.

Можно попробовать "обмануть судьбу"
Здо́рово. Спасибо! Так просто. Это, получается, пресет запомнился и мы вторым заходом просто сверху его чуть корректируем?

Не по теме:
«индусы» зауважают и станут слушаться '8)'
 
Большой минус конечно двойной экспорт
Зато настройки запоминаются и не создаются новые пресеты. (Как в том мультике: «Я беспороден — это минус, но благороден — это плюс». :)) Беру на вооружение, спасибо ещё раз. Сделаю ответвление: если чекбокс Crop изменился, то двойной экспорт, а если нет — напрямую.

Ещё хочу попробовать с созданием нового пресета на основе выбранного, как @Skvoznyak предложил, только пока время не получилось выкроить заняться.