[Acr XI] Автоматизация выделения проблемных страниц (Акробаты выше 11-го не предлагать!)

  • Автор темы Автор темы Hiigara
  • Дата начала Дата начала
вишенкой на торте может служить ещё такая "помощь" заказчиков (неоднократно встречавшаяся):
- Мы чернобелые А4 уже сами распечатали - вы их не печатайте, просто уберите и всё.
... А в "цветных" - пара тонких красных линий
 
Кстати, если уж на то пошло, то после SplitBypageSize странички остаются в том же порядке, что и в исходном файле, т.е. страница 3 всегда раньше страницы 5, при условии, что они одного формата...
Скрипты никто не ругает, они наооброт помагают упростить и ускорить работу, по сортировке листов "при условии, что они одного формата..." (и правильно сохраннены заказчиками).
Вам наверное везет, когда приносят в большенстве правильно сохранные форматы, но эти чертежи делают проектировщики, очень многие ГОСТЫ при сохраннеие особенно не стандартных форматов особо не соблюдают.
Поэтому после автоматизированного определения форматов листов, помогла бы ручная доработка, чтобы исправить ошибки заказчиков при сохраннеии форматов и сохранить последовательность листов для последуйщей раскладки.

Просто спрошу - а вы когда-то массово чертежи печатали?
Просто отвечу, печатали, что проходилось вызывать газель, чтобы отдать заказчику все коробки, при этом все делалось оперативно даже без скриптов.
Понимаю что работу по подготовке можно очень сильно ускорить, но только все скриптом не решить к сожалению...
 

Не по теме:
Кстати, порядок закладок может отличаться от прядка страниц, так что просматривать через них например все страницы одного формата будет очень даже удобно, просто их нужно отсортировать закладки по формату. Даже с клавиатуры удобно :)
 
Скрипты никто не ругает, они наооброт помагают упростить и ускорить работу, по сортировке листов "при условии, что они одного формата..." (и правильно сохраннены заказчиками).
Вам наверное везет, когда приносят в большенстве правильно сохранные форматы, но эти чертежи делают проектировщики, очень многие ГОСТЫ при сохраннеие особенно не стандартных форматов особо не соблюдают.
Поэтому после автоматизированного определения форматов листов, помогла бы ручная доработка, чтобы исправить ошибки заказчиков при сохраннеии форматов и сохранить последовательность листов для последуйщей раскладки.


Просто отвечу, печатали, что проходилось вызывать газель, чтобы отдать заказчику все коробки, при этом все делалось оперативно даже без скриптов.
Понимаю что работу по подготовке можно очень сильно ускорить, но только все скриптом не решить к сожалению...
Простите, я все равно не понимаю, что значит "при условии, что они одного формата...". Там вся суть, что страницы разных форматов, в этом смысл. "(и правильно сохраннены заказчиками)" - ну так а какая разница, выделите вы диапазоны или нет, если вам все равно глазами просматривать? Конечно, если у вас формат листа A3, а это, на самом деле, ужатый А1, вам ничто особо не поможет, хотя...
сохранить последовательность листов для последуйщей раскладки.
А вы все на одном устройстве печатаете, что ли? иначе я опять же не понимаю, если с нескольких устройств печатать, вам же все равно руками раскладывать? Мы, например, А4/А3 на МФУшках 60-100 копий в минуту гоним, а большие форматы - на рулон. 45 м рулон поставили и погнали, потом подбираем, естественно
 
... тем, что не нарушается порядок, а создается цепочка из фрагментов одного формата, с обозначением начала и конца
... к вашему скрипту никаких претензий - всякий раз кланяюсь и поминаю добрым словом
и где-то, уже точно не помню, читал что у вас есть более продвинутые nonFree варианты - оттого и предложил
Сел вечером, сделал, добавил в комплект еще один скрипт Split to ranges same format. Он делит файл на последовательно идущие диапазоны одинаковых форматов, в имени файла указывает диапазон страниц и формат. Спасибо, @dastin , за идею
1698177456986.png

1698177574042.png
 
Последнее редактирование:
  • Огонь
  • Спасибо
Реакции: Hiigara и dastin
Да, наверное можно с помощью закладок (и/или комментариев) попробовать как-то удобно реализовать, выделение (отображение), того, что определилось программным путем, а затем как-то путём снятие и добавления (закладок/комментариев) уточнять список нужных листов (страниц)...
Кстати, закладки тоже сделал. Теперь в начале списка закладок появляется список форматов и вложенные закладки - диапазоны страниц этих форматов. Т.е. можно гонять по определенным форматам, не нарушая порядка в файле. Как-то так. Спасибо за идею, @_MBK_
1698177792068.png
 
Последнее редактирование:
  • Спасибо
  • Огонь
Реакции: Hiigara, _MBK_ и dastin
Дастину как тестеру выдать нахаляву можно. От таких товарищей лучше не прятать :)
 
Конечно, если у вас формат листа A3, а это, на самом деле, ужатый А1, вам ничто особо не поможет, хотя...
Да, имеено из-за таких проблем и хотелось скриптом сначала выделить миниатюры, и визуально исправить подобные ошибки, т.к. такие вещи не редкость, могут быть чертежи сохранены в масштабе 1:1, но при этом иметь большие поля или чертежи высотой 297/420мм сохраннёные высотой 594мм (соответветсвенно, скрипт не верно определит размер листа и поместит его не в тот файл), много проблем с отсканированыим листами А4 (у которых размеры пляшут от 190х280мм до А0), А1 сохранен как А2, А0 как А1 или на оборот и т.п.
Люди просто ошибаются при сохраннеии, и все ошибки лучше отловить перед печатью, т.к. всё это увеличивает процесс раскладки и количество стопок в том числе. Бороться с заказчиками в этом плане бесполезно, просто решаем все эти проблемы самостоятельно, бесплатно.

Более того после сортировки чертежей, испраляются многие ошибки размеров листов, т.к. стараемся соблюдать при печати отступы (20, 5, 5, 5 мм), и печаталась основная рамка, чертежи высотой 297мм, например компонуются на рулон в зависимости от количества экзепляров.

После исправлений, чертежи печатаются на стандартных форматах рулонов, 594мм и 841мм, не на увеличенных (610, 620, 900мм), чтобы не тратить время на резку.

Мы, например, А4/А3 на МФУшках 60-100 копий в минуту гоним, а большие форматы - на рулон. 45 м рулон поставили и погнали, потом подбираем, естественно

Да, примерно по такому же принцепу работаем, только печатаем на рулонах 175м.
 
Последнее редактирование:
Да, имеено из-за таких проблем и хотелось скриптом сначала выделить миниатюры, и визуально исправить подобные ошибки, т.к. такие вещи не редкость, могут быть чертежи сохранены в масштабе 1:1, но при этом иметь большие поля или чертежи высотой 297/420мм сохраннёные высотой 594мм (соответветсвенно, скрипт не верно определит размер листа и поместит его не в тот файл), много проблем с отсканированыим листами А4 (у которых размеры пляшут от 190х280мм до А0), А1 сохранен как А2, А0 как А1 или на оборот и т.п.
Люди просто ошибаются при сохраннеии, и все ошибки лучше отловить перед печатью, т.к. всё это увеличивает процесс раскладки и количество стопок в том числе. Бороться с заказчиками в этом плане бесполезно, просто решаем все эти проблемы самостоятельно, бесплатно.

Более того после сортировки чертежей, испраляются многие ошибки размеров листов, т.к. стараемся соблюдать при печати отступы (20, 5, 5, 5 мм), и печаталась основная рамка, чертежи высотой 297мм, например компонуются на рулон в зависимости от количества экзепляров.

После исправлений, чертежи печатаются на стандартных форматах рулонов, 594мм и 841мм, не на увеличенных (610, 620, 900мм), чтобы не тратить время на резку.



Да, примерно по такому же принцепу работаем, только печатаем на рулонах 175м.
Все равно непонятно, как вам помогут выделенные миниатюры. По миниатюре искать, где слишком широкие поля? Но, в общем и целом, js в акробате практически не имеет доступа к интерфейсу, поэтому ваша хотелка это сильно вряд ли.
Даже результаты префлайта он нормально не сохраняет. Из интерфейса в xml полная инофрмация копируется, например, сообщения об ошибках с номерами страниц, а из js - только сообщения, что ошибки были и сколько их. но где - неизвестно.
В общем, ваша хотелка в рамках js Acrobat малореальна. Может, если плагин писать, но там и трудозатраты немного другие.
Распечатывать лист с миниатюрами и смотреть 16-20 страничек на лист? Расходы, конечно, и время, но с распечаткой удобнее работать
 
Последнее редактирование:
Здравтсвуйте.

Имеется похожая задача, как у автора.
Решение необходимо для Acrobat Pro XI (т.к. лицензия на лицензии win7).

Можно ли программным путем (javascript) выделить/выбрать миниатюры страниц (Pages Thumbnails)?
Номера страниц известны их нужно только выбрать/выделить, что бы они были подсвечены синим как при ручном выделении.

В Acrobat Pro XI нет поля (Acrobat Pro DC и выше) в которое, можно вводить номера страниц.

Спасибо.
Выделить миниатюры нельзя. А если попробовать вот так и создать другие миниатюры, по вашему списку?
скопируйте текст в папку acrobat/javascripts. У вас появится кнопка "Create miniatures". После запуска запросит список страниц, можете указать не более 9 номеров страниц, через запятую. После работы к файлу добавится еще одна страница с миниатюрами страничек (векторными), которые можно масштабировать и просматривать, а также подписями - номером страницы и ее размерами. Щелчок по миниатюре перекинет вас на соответствующую страницу. Я, кстати, пока отлаживал, в своем тестовом наборе нашел страницы А1 сохраненные как А3 :) Тут так, черновой набросок, с "magic numbers" и прочими недоделками. Но оценить позволит. Ну и да, нужно еще 9 страничек - запускайте еще раз

JavaScript:
// (C) SergeySoft 2023 z-print@bk.ru

const psProcs1 = [
    ["Create Miniatures", "CreateMiniatures()"],
];
const MMPRATIO = 2.834; //  ratio to convert pt to mm


if (app.viewerVersion < 10) {
    for (proc of psProcs1)
        app.addMenuItem({ cName: proc[0], cUser: proc[0], cParent: "Tools", cExec: proc[1], cEnable: "event.rc = (event.target != null);"});
} else {
    for (proc of psProcs1)
        app.addToolButton({ cName: proc[0], cLabel: proc[0], cExec: proc[1], cEnable: "event.rc = (event.target != null);"});  
};

function mm2pt(mm) {
    return mm * MMPRATIO;
};

function pt2mm(pt) {
    return pt / MMPRATIO;
}

function getBtnPos(btnNum) {
    col = btnNum % 3;

    row = Math.floor(btnNum / 3);
    var aRect = [];
    [aRect[0], aRect[1], aRect[2], aRect[3]]  =    [mm2pt(10 * (col + 1) + 56 * col),
                                                     mm2pt(297 - (10 * (row + 1) + 86 *row)),
                                                     mm2pt(10 * (col + 1) + 55 * (col + 1)),
                                                     mm2pt(297 - (10 * (row + 1) + 86 *(row + 1)))];
     return aRect;
};

CreateMiniatures = app.trustedFunction(function() {
    var cResponse = app.response({
        cQuestion: "Input page list (via semocolon, no more than 9 page numbers)",
        cTitle: "Page list",
        cDefault: "1",
        cLabel: "Page list to miniatures"
        });
 
    if ((cResponse == null) || (cResponse === "")) {
        app.alert("Empty list. Exiting");
        return;
    };

    pageList = cResponse.replace(/ /g,'').split(",");

    btnCount = pageList.length <= 9 ? pageList.length : 9;
    app.beginPriv();
    this.newPage({nWidth : (mm2pt(210)), nHeight : mm2pt(297)});
    for (var i = 0; i < btnCount; i++) {
        var aRect = getBtnPos(i);
        var f = this.addField("P_"+i, "button", this.numPages - 1, aRect);
        f.buttonImportIcon(this.path, pageList[i] - 1);
        f.setAction("MouseUp", "this.pageNum =" + (pageList[i] - 1));
        pRect = this.getPageBox("Media", (pageList[i] - 1));
        w = pt2mm(pRect[2] - pRect[0]);
        h = pt2mm(pRect[1] - pRect[3]);
        f.buttonSetCaption(util.printf("page %0d - %0d x %0d", pageList[i], w, h));
        f.buttonPosition = position.iconTextV;
    };
    this.pageNum = this.numPages -1;
    app.endPriv();
}
)
 
Последнее редактирование:
  • Спасибо
Реакции: Hiigara
или тут, взять из архива. Пароль - ssoft
 

Вложения

  • Спасибо
Реакции: Hiigara
по поводу ...
Вчерашних обновлений
на Acrobat DC x64 - всё ОК
одна вялая хотелка для миниатюр - "смягчить" требование указывать диапазон стараниц ЧЕРЕЗ ЗАПЯТУЮ - стандартный способ {1-5,9,11-13} сложно реализовать?
те же скрипты помещённые в c:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Javascripts\
перестают быть видны, в панели исчезает строка AddOn Tools
1698554478046.png

прежний diffsizepageutils виден и работает - как в 11 версии, так и в DC
 
Последнее редактирование:
по поводу ...

на Acrobat DC x64 - всё ОК
одна вялая хотелка для миниатюр - "смягчить" требование указывать диапазон стараниц ЧЕРЕЗ ЗАПЯТУЮ - стандартный способ {1-5,9,11-13} сложно реализовать?
Не сложно, просто а) это набросок и б) непонятно, нужно ли это кому-то вообще. Также как и требование "не более девяти", также как и имена в виде нормальных названий форматов, также как и всякие проверки на выход из диапазона страниц...
те же скрипты помещённые в c:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Javascripts\
перестают быть видны, в панели исчезает строка AddOn Tools
Посмотреть вложение 161701

прежний diffsizepageutils виден и работает - как в 11 версии, так и в DC
Это после какого именно? А если addMiniatures.js только поставить? Какая-то несовместимость. Интересно, что в консоли, если Ctrl-J нажать? Ставить себе 11 Acrobat я не горю желанием, нет смысла особого