JavaScript в Acrobat X: печать диапазонов страниц - PullRequest
0 голосов
/ 20 января 2019

В Adobe Acrobat (версия X) я хочу отправлять страницы книги в определенном необычном порядке на принтер.Оказалось, что это сложнее, чем я думал.Поскольку диалог печати Acrobat принимает вводимые вручную диапазоны страниц длиной до 100 символов, мне нужно лучшее решение.

Я надеялся, что смогу сделать это через Javascript.

Для тестирования я использовал следующее:

var pp = this.getPrintParams();
pp.printRange = [[2,5], [8,8], [10,10]];
this.print(pp);

, который должен печатать страницы 3-6, 9, 11

Однако он этого не делает.Я всегда печатаю всю книгу (300 страниц).

В чем здесь проблема?

Примечание: мое реальное задание на печать

Указанные выше диапазоны страниц предназначены только для тестирования.В конечном итоге я хочу печатать страницы в определенном порядке, например,

> 1, 151, 152, 2, 3, 153, 154, 4... и т. Д.

, которые, очевидно, придется переводить в 0 * на основе

> [0,0],[150,150],[151,151],[1,1]...

или, по крайней мере, так что я полагаю.

Может возникнуть дополнительная проблема с моим массивом (страниц) длиной до 300 элементов (или более), и я не знаю, принимает ли pp.printRange такое количество ...

Еще один тест

Я также попробовал

var pages = [[0,0],[150,150],[151,151],[1,1]]
var pp = this.getPrintParams();
pp.printRange = pages;
this.print(pp);

Результат: снова Acrobat игнорирует массив номеров страниц и упрямо печатает весь документ.

Печать выполняется только в одну сторону ...

Моя задача - изменить порядок страниц книги (следуя определенному алгоритму).Печать их в определенном новом порядке - это просто мое ленивое решение переупорядочить их.Если бы переупорядочение могло быть сделано иначе (например, извлечение и затем повторное объединение в желаемом порядке), это также было бы решением.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

В итоге мое решение этой проблемы было следующим:

Я приобрел инструмент (Javascript), созданный для таких целей Гиладом Деннебомом (http://try67.blogspot.com/)), у которого также есть много других инструментов для Acrobat, некоторые из них бесплатно, некоторые для покупки (доступны).

Инструментом, который решил мою проблему, был его скрипт Извлечение непоследовательных страниц . Были некоторые первоначальные проблемы, чтобы запустить его полностью, но Гилад решил их немедленно.

Извлечение непоследовательных страниц делает именно то, что я искал (и то, что я сначала хотел запрограммировать сам):

1) При запуске отображается диалоговое окно с запросом последовательности номеров страниц, например, 5,7,13,6,101,2,4,200-210 или любой другой комбинации. Это можно ввести или скопировать.

2) Затем он извлекает страницы в указанном порядке из исходного документа и собирает их (в этом порядке) в новом документе. Новому документу присваивается случайное имя.

3) Этот новый документ можно сохранить, а затем распечатать со страницами в новом порядке.

0 голосов
/ 20 января 2019

К сожалению, ответ таков: параметр printRange впервые поддерживается в Acrobat версии 11 (XI).Вы можете проверить эти вещи из документации .

. Я предлагаю вам, во всяком случае, проверить версию в вашем скрипте, как предложено в документации:

if (typeof app.viewerVersion != "undefined" && app.viewerVersion >= 11.0)
{
    // Perform version specific operations.
}

Тогда вы, конечно, можете прибегнуть к другим методам, если printRange не поддерживается.Вы можете, например, временно удалить ненужные страницы, а затем распечатать весь документ - это немного странно, но влияет только на версии ниже XI.

...