Как обрезать PDF-файл и получить доступ к объектам аннотаций, чтобы запустить интерфейс Javascript

#javascript #pdf #mupdf

Вопрос:

Мне нужно обрезать /обрезать любое пустое пространство вокруг текста в PDF-файле, и мне нужен доступ к некоторым простым данным, содержащимся в аннотациях PDF.

Мое рабочее решение с использованием pdf.js слишком медленно для моего варианта использования. Mutool кажется намного быстрее, но я сталкиваюсь с 3 трудностями:

  1. В mutool run Javascript я не вижу документации для доступа к объектам аннотаций.
  2. В mutool запустите Javascript, мне не удается выполнить некоторую разумную обрезку /обрезку изображения. Мне удается получить ограничивающую рамку, используя их пример с виртуальным интерфейсом.
  3. Похоже, что матрица преобразования для рендеринга растрового изображения игнорируется — я получаю изображения с плохим разрешением.

Есть ли опыт работы с mutool для запуска Javascript-доступа к PDF-файлам?

Комментарии:

1. Определенно поможет эта книга. Мой открытый вопрос все еще заключается в том, как внутренние компоненты API mutool привязываются к JS. Поскольку свойства объектов JS в mutool не поддаются перечислению, я не могу по-настоящему экспериментировать с самоанализом, но книга может указать на некоторые идеи. Мои потребности в обрезке — это просто «вырезать пустое пространство за пределами ограничительной рамки», но все равно для этого нужен вызов API, имя которого вам нужно назвать 😉

2. Вероятно, обрезка-неправильное слово, и я бы предпочел использовать обрезку. Я имею в виду: Обрезать до самого маленького прямоугольника, который содержит все отрисованные (небелые) пиксели. Т. е. вырезать поле, состоящее из белой бумаги. Для этого мне нужно сначала определить этот ящик. Ghostscript делает это, но слишком медленно. У Mutools есть пример на основе js для определения размера, но я не смог изменить процесс визуализации, чтобы ограничить его этими значениями.

3. У него, безусловно, будет некоторая возможность определить РАЗМЕР изображения, которое он выводит. Я просто не знаю имени функции из-за отсутствия привязки javascript API.