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

  • Автор темы Автор темы Hiigara
  • Дата начала Дата начала
Точнее, вот так.
JavaScript:
// (C) SergeySoft 2023 z-print@bk.ru
//  for Acrobat XI



const cmName = "Create Miniatures";
const cmProc = "CreateMiniatures()"

const MMPRATIO = 2.834;


if (app.viewerVersion < 10) {
    app.addMenuItem({ cName: cmName, cUser: cmName, cParent: "Tools", cExec: cmProc, cEnable: "event.rc = (event.target != null);"});
} else {
    app.addToolButton({ cName: cmName, cLabel: cmName, cExec: cmProc, 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 mm", pageList[i], w, h));
        f.buttonPosition = position.iconTextV;
    };
    this.pageNum = this.numPages -1;
    app.endPriv();
}
)
 
  • Огонь
Реакции: dastin
угум-с ... завелось
Там, похоже, старая версия js встроена, в DC посвежее, отсюда и проблема
те же скрипты помещённые в c:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat\Javascripts\
перестают быть видны, в панели исчезает строка AddOn Tools
то же самое. Исправил у себя, теперь будет под XI запускаться нормально
 
Выделить миниатюры нельзя. А если попробовать вот так и создать другие миниатюры, по вашему списку?
скопируйте текст в папку acrobat/javascripts. У вас появится кнопка "Create miniatures". После запуска запросит список страниц, можете указать не более 9 номеров страниц, через запятую. После работы к файлу добавится еще одна страница с миниатюрами страничек (векторными), которые можно масштабировать и просматривать, а также подписями - номером страницы и ее размерами. Щелчок по миниатюре перекинет вас на соответствующую страницу. Я, кстати, пока отлаживал, в своем тестовом наборе нашел страницы А1 сохраненные как А3 :) Тут так, черновой набросок, с "magic numbers" и прочими недоделками. Но оценить позволит. Ну и да, нужно еще 9 страничек - запускайте еще раз

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

const psProcs1 = [
    ["Create Miniatures", "CreateMiniatures()"],
];
...
)

Спасибо за Ваш труд и отзывчивость, думаю не стоит зацикливаться на выделении миниатюр, нельзя их выделить програмным путём значит нельзя. Похоже миниатюры, нельзя выделить программно даже если создавать плагин.

Пробую пойти немного другим путем, визуализировать выделение с помощью комментариев, спасибо за идею _MBK_.
Недостаток комментариев пока, то что там нельзя управлять размером шрифта (он немного меняется только в панели инструментов), а с обычным текстом и слоями связываться не хочется (на данный момент).
 
Последнее редактирование модератором:
  • Спасибо
Реакции: zollinger
Спасибо за Ваш труд и отзывчивость, думаю не стоит зацикливаться на выделении миниатюр, нельзя их выделить програмным путём значит нельзя. Похоже миниатюры, нельзя выделить программно даже если создавать плагин.

Пробую пойти немного другим путем, визуализировать выделение с помощью комментариев, спасибо за идею _MBK_.
Недостаток комментариев пока, то что там нельзя управлять размером шрифта (он немного меняется только в панели инструментов), а с обычным текстом и слоями связываться не хочется (на данный момент).
Зачем нельзя? вот цветом выделено. Забавно, что вы задаете вопросы и не читаете ответов. Ну и загадочность вашей конечной задачи доставляет, конечно
1698661500922.png
 
Последнее редактирование:
а я вообще ничего не понял *[[
Точно, он же про комментарии, а не про закладки, а я ему комментарии показываю... Тогда я тоже теряюсь - что он хочет делать через комментарии? Загадка
 
Почему-то анекдот вспомнился.
Прибегает парень к врачу и кричит:
— Доктор, кастрируйте меня!
Врач удивлённо:
— Зачем вам кастрация?
— Делайте быстрее, потом объясню!
Ну, сделали ему операцию, парень вышел из-под наркоза, доктор его и спрашивает:
— Ну теперь хоть расскажите зачем вам это понадобилось.
— Понимаете доктор я собираюсь жениться на еврейке, а у них такой обычай.
— Так может вам надо было обрезание сделать?
— А я что сказал?
 
Можно программно и размером и гарнитурой и цветом. Можно даже картинки рисовать.
Есть у меня модулек один, я в нем таблицы разнообразные рисую в pdf с помощью комментариев. Неидеально, но pdf плоский на выходе приличный
 
А там за 8 лет недостаточно внятно написано? Если вы с чертежами массово не работаете, то оно вам и не нужно, в общем. Просто мы печатаем чертежи полупоточным способом, нам помогает. Специфическая фигня, не обращайте внимания.
На кино у меня вдохновения нет. Я скучный человек
 
Последнее редактирование:
Может быть когда-нибудь. А вечером пятницы у меня немного другие дела.
Вот, послушайте лучше хорошую пятничную песню. Она очень хорошо передает моё сиюминутное настроение