Тестируем: ScriptBoxSuite.js

  • Автор темы Автор темы banIDit
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

banIDit

I love this game!
Топикстартер
Сообщения
1 160
Реакции
241
Вот и мои первые скромные достижения в области акробатовского JS.
Небольшой набор из двух скриптов.
Кидаем ScriptBoxSuite.js в папку Program Files\Adobe\Acrobat (7 или 8)\Acrobat\Javascripts. Перезапускаем программу. В меню Tools находим подменю ScriptBoxSuite.

1. BookmarkBox.
Создает для каждой страницы закладку (bookmark), в которой размещает еще 5 вложенных с размерами Crop, Bleed, Art, Trim и Bounding боксов.

2. ShowMeBoxes.
Запускает окно с перечислением размеров всех боксов на активной странице.
Пожелания и комментарии только приветствуются. :)
 

Вложения

Ответ: Тестируем: ScriptBoxSuite.js

Супер! Поздравляю с освоением новых месторождений!
Поюзал на Acrobat 8.1/Vista Ultimate.

1 BookmarkBox - все отработало
2 ShowMeBoxes - ничего не произошло....
 
Ответ: Тестируем: ScriptBoxSuite.js

took сказал(а):
2 ShowMeBoxes - ничего не произошло....
Совсем забыл напомнить.
В преференсах программы, в разделе Javascript, отметить галочку Enable menu items Javascript execution privileges...
 
Ответ: Тестируем: ScriptBoxSuite.js

Заработало!
 
Ответ: Тестируем: ScriptBoxSuite.js

Win xp, Acrobat 7 - все работает, все отлично!!
 
Ответ: Тестируем: ScriptBoxSuite.js

+1 MacOSX, Acrobat 7
 
Ответ: Тестируем: ScriptBoxSuite.js

вроде работает :)
acrobat 8.1 / win xp
 
Ответ: Тестируем: ScriptBoxSuite.js

Все работает
Acrobat 6.0.5.01.03.2006
XP sp2
 
Ответ: Тестируем: ScriptBoxSuite.js

к сожалению, скриптовую поддержку в акробате писали люди, плохо знакомые со спецификацией. Согласно которой, если TrimBox (то же относится к BleedBox & ArtBox) не определен, то он defaults to CropBox. А у них (и, следовательно, у Вас) -- to MediaBox. Однозначно надо что-то сделать


Не по теме:
далее моё имхо: добавить, конечно, MediaBox. Цветное выделение в букмарках привести в соответствие с цветовой индикацией боксов в акробате (синий bleed, зеленый trim, красный art). Порядок: media-crop-trim-bleed-art. Команды перенести в корень, так клавиатура дольше прослужит. По завершении команды BookmarkBox открывать панель букмарков (просто вежливость). Если в документе были букмарки, то alert, ибо Вы их уничтожаете. В букмарках писать лейблы страниц, если они есть (номера -- в скобках: page x of xx). Для особо занудных -- две аналогичные команды, но с координатами LL & UR, а не шириной и высотой

кстати, для округления, метод toFixed не проще?

 
Ответ: Тестируем: ScriptBoxSuite.js

1998, большое спасибо за рекомендации.
Займусь в самое ближайшее время.
кстати, для округления, метод toFixed не проще?
Признаться, не пробовал. Посмотрю.
По завершении команды BookmarkBox открывать панель букмарков (просто вежливость).
Это будет в следущей "версии". :)
Если в документе были букмарки, то alert, ибо Вы их уничтожаете.
Они не уничтожаются, а просто смещаются вниз. Но я вроде придумал как сделать удобнее.
В букмарках писать лейблы страниц, если они есть (номера -- в скобках: page x of xx).
Лейблы тоже в разработке. Это не сложно.
...А у них (и, следовательно, у Вас) -- to MediaBox. Однозначно надо что-то сделать...
Заметил этот момент когда уже закончил скрипт, и ковырял подопытный pdf питстопом. Да и раньше замечал, что акробат боксы не показывает у некоторых файлов. Есть кое-какие мысли по этому поводу...

Всем большое спасибо за отзывы!
Заседание продолжается... ;)
 
Ответ: Тестируем: ScriptBoxSuite.js

Работает! Win Vista Ultimate Acrobat 8.1
banIDit-у гран мерси!
Еще бы панелечку (toolbar) привесить для этого замечательного скрипта...
 
Ответ: Тестируем: ScriptBoxSuite.js

Наконец-то дошли руки...
Выкладывается на тестирование версия 1.5.

Добавлено:

1. Координаты левого нижнего и правого верхнего углов бокса.
BookmarkBox помещает их для каждого бокса в соответствующий "subbookmark", ShowMeBoxes дополнительно спрашивает, показать инфу об углах или нет.

2. BookmarkBox.
Скрипт создает корневую закладку "BookmarkBox", в нее помещает все остальные. Щелчок на закладке "BookmarkBox" удаляет ее вместе со всеми дочерними.
Все постраничные закладки обзываются так: "Page" + метка страницы (label). Label, как правило, показывает номер страницы. Ситуация, когда у страницы вообще нет метки не отрабатывалась, поэтому, если будет сильно надо, подкорректируем.
Теперь после выполнения скрипта, все постраничные закладки закрыты, остается открытой только та, что указывает на активную страницу.
Откорректирована последовательность перечисления боксов и их цветовые обозначения.

3. ShowMeBoxes.
См. п.1. :)

4. Еще один скрипт добавлен в собрание ScriptBoxSuite – ToPageSeparator.
Название говорит само за себя. Активный документ разбивается на отдельные страницы, которые сохранятся в папку с рядом с ним же.

Итак пробуем, ищем ашипки, вносим предложения... :)
 

Вложения

Ответ: Тестируем: ScriptBoxSuite.js

спасибо, что учли мои предложения. Вынужден с сожалением констатировать, что скриптовая модель акробата сообщает координаты (боксов в т.ч.) относительно CropBox (LL которого в результате всегда 0,0). Что не соответствует действительности, и сводит на нет мои пожелания знать LL & UR. Тем не менее, спасибо. И, главное, повторяю: TrimBox не может быть больше CropBox. Это у Вас не исправлено. Кривизна скриптовой модели -- не оправдание для программиста! :):)


Не по теме:
я бы добавлял custom пункты последними в меню, так больше порядка. Зеленый у trimbox'a -- просто (0,1,0). И, мелочь, но, насчет toFixed, строки

width = (aRect[2] - aRect[0])*0.35275;
width = Math.decRound(width,1);
return width

заменяются на

return ((aRect[2] - aRect[0])*0.35275).toFixed(1)

 
Ответ: Тестируем: ScriptBoxSuite.js

Всё работает, спасибо.
winXPsp2 rus, Acrobat Pro 8.1.0

Пока соображения следующие:

1. Обратил внимание на то, что ToPageSeparator исходный PDF-1.3 посохранял в виде PDF-1.6. Есть ли возможность оставить версию?

2. Выдаваемые размеры, я так понимаю, округляются до 1 десятой. Увидел, что таким образом "скрылись" 0.4 мм. Оно, конечно, не шибко большое число... но таки может оставить для "чистоты эксперимента"? Ну тут уж на вкус коллег.

А, уже Вадим написал про "toFixed(1)" -- это, видимо, и есть округление?
 
Ответ: Тестируем: ScriptBoxSuite.js

И, главное, повторяю: TrimBox не может быть больше CropBox.Кривизна скриптовой модели -- не оправдание для программиста!
Согласен, упустил этот момент.
В итоге в этой ситуации получается, он равен ему? Или undefined?
Не могу найти то место, где становится четко ясно: бокс не задан вапще, либо равен значению другого бокса. Туплю чо-то...
return ((aRect[2] - aRect[0])*0.35275).toFixed(1)
Пробовал этот метод, но то ли от недостаточного знания JS, то ли от лени, не понравилось как он работает. К примеру, функция округляет и может дать такой результат 210*297, toFixed дает 210,0*297,0. Что мне показалось не очень удобно. Да и в результатах округления не вижу большой разницы. Я могу быть неправ, конечно...
Увидел, что таким образом "скрылись" 0.4 мм.
Вот тут можно подробнее?
Есть ли возможность оставить версию?
Усилиями скриптовой модели Акробата думаю нет, я пока не нашел такой возможности.
 
Ответ: Тестируем: ScriptBoxSuite.js

Evgen > "скрылись" 0.4 мм
banIDit > подробнее?

Взял тестовый PDF, размер которого восьмерка показывает как 153х233 мм (внизу акробатовского окна).
В диалоге Crop Pages размер 153,11х232,84 мм
Скрипт показывает 153,1х232,8 мм

Хм. Прошу прощения, ошибся на порядок. :) Написал числа и увидел.
Паникеров к стенке! :)
 
Ответ: Тестируем: ScriptBoxSuite.js

В итоге в этой ситуации получается, он равен ему? Или undefined?
Не могу найти то место, где становится четко ясно: бокс не задан вапще, либо равен значению другого бокса.
см. PDF Reference, например version 1.7, стр. 145, TABLE 3.27 "Entries in a page object" :

TrimBox - rectangle - (Optional; PDF 1.3) A rectangle, expressed in default user space units, defining the intended dimensions of the finished page after trimming (see Section 10.10.1, “Page Boundaries”). Default value: the value of CropBox.

хм-м, однако, Section 10.10.1 говорит нам, что

The crop, bleed, trim, and art boxes should not ordinarily extend beyond the boundaries of the media box. If they do, they are effectively reduced to their intersection with the media box. Figure 10.3 illustrates the relationships among these boundaries. (The crop box is not shown in the figure because it has no defined relationship with any of the other boundaries.)

Таким образом, насчет "TrimBox не может быть больше CropBox" я погорячился. Источник заблуждений -- при попытке задать cropbox меньше чем trimbox, акробат уменьшает trimbox до cropbox'a.

Конкретно, к Вашему скрипту, на практике бывает что trimbox не задан вообще, но полоса покроплена в акробате. В этом случае (конкретно на вопрос отвечаю) trimbox должен сообщаться как cropbox, а не mediabox

toFixed дает 210,0*297,0. Что мне показалось не очень удобно
насколько помню, это более грамотно технически. "210" (вместо "210,0") говорит что округление было до целых единиц
 
Ответ: Тестируем: ScriptBoxSuite.js

на практике бывает что trimbox не задан вообще
В том-то и дело, что мне пока не известен способ выяснить это с помощью скриптинга! Либо бокс не задан, либо он равен MediaBox`у. Одно из двух.
"210" (вместо "210,0") говорит что округление было до целых единиц
Все верно, но через функцию, как выяснилось, можно округлять и до целых, если после запятой стоит, к примеру ...,010... или ...,9989...
Логика округления, имхо, очень близка к родной акробатовской. Попробуйте вбить в окне Crop Pages число типа 15,25.
Оно округлится до 15,3. А если 19,98? Получится 20, а не 20,0.
 
Ответ: Тестируем: ScriptBoxSuite.js

banIDit сказал(а):
Получится 20, а не 20,0.
ну и ничего хорошего. Кстати, дурацкое округление до десятых долей в диалоге "Crop" делает якобы возможность задавать боксы средствами самого акробата ("акробат как инструмент для препресса") практически unusable. Но это к делу не относится, и вообще, пустое. :) Скрипт хороший, автор молодец



Не по теме:
btw, о логике: в том же диалоге, под рисунком, размеры боксов всегда выводятся с сотыми долями, т.е. как "210,00", и логики в этом на порядок больше -- если вспомнить о числе значащих цифр в вещественном типе Single, в котором считает интерпретатор. Координаты боксов (в пунктах, есс-но) в файле pdf пишутся просто как ascii-текст, и приложения (нормальные) не пишут мусора в виде лишних, для Single, десятичных знаков. Любопытно (кому-то может быть), что акробат считывает этот ascii-текст и видимо хранит вещественные числа в существенно большей, как принято у современных машин, разрядности, нежели Single. Отсюда липовые (фантомные) десятичные знаки, которые видимо сообщает acrobat api, тому же Preflight'овскому браузеру структуры pdf в 8-ке, или браузеру енфокуса в виде плагина. Тогда как, enfocus browser, который standalone, показывает размеры боксов совершенно правильно, как они и записаны в виде ascii текста внутри pdf, т.к. он видимо браузерит pdf напрямую без адобовских api. Но это меня вообще не в ту степь понесло :)
 
Ответ: Тестируем: ScriptBoxSuite.js

Спасибо... Жалко только что приходится в Tools лезть...
Года 2 назад у кого-то видел скрипт - помещал размер документа в левый нижний угол (7 Акробат).Причём формат был показан всегда - не было необходимости делать дополнительные телодвижения. Кому-нибудь попадался?
 
Статус
Закрыто для дальнейших ответов.