Есть ли в Linux программы для чтения PDF-файлов со скриптами? - PullRequest
0 голосов
/ 14 октября 2019

Я хотел бы позвонить на локальный сервер, на котором запущен интерфейс REST, из программы чтения PDF, передав в качестве аргумента выделенный текст. Первый вариант, который пришёл в голову, - это написать простой bash-скрипт с вызовом curl и использовать скрипт из приложения pdf для его выполнения.

Существуют ли программы для чтения сценариев PDF, которые позволили бы это? Кажется, что ни один из наиболее распространенных (например, Okular, Evince, gv, xpdf) не позволил бы это сделать.

Добавлено после комментария @DanielH:

Я не прошу методзапускать произвольный код при открытии PDF-файла. Скорее, я спрашиваю, может ли пользователь выбрать запуск внешнего приложения из программы чтения PDF-файлов (или сценария).

Okular (KDE reader) имеет ограниченную форму этой функциональности: используя веб-ярлыки KDE, пользователь может выбрать часть текста, а затем запустить браузер с предопределенным URL-адресом, который содержит текст в URL-адресе.

Например, когда пользователь Okular выбирает слово, а затем выбирает ярлык «Google», Okular запускает браузер и помещает следующий псевдо-URI в строку адреса:

https://www.google.com/search?q=\{@}&ie=UTF-8

с {@} замененным выделенным текстом. Ярлыки KDE Web доступны для редактирования пользователем и могут привести к довольно сложным запросам.

Эта функциональность очень близка к тому, что мне нужно, за исключением того, что единственным http-запросом, которым можно управлять таким образом (насколько я знаю), является GET. Вместо этого мне нужно было бы запустить HTTP-запрос POST, который, насколько я знаю, не может быть выполнен из строки адреса. Отсюда мой вопрос об использовании bash + curl.

1 Ответ

0 голосов
/ 16 октября 2019

Я должен был знать ... что-нибудь связанное с текстом в Unix? Ответ всегда emacs.

В частности:

  1. пакет pdf-tools можно использовать для чтения файлов pdf в буфере emacs. Он намного более эффективен, чем PdfView, и предоставляет полный доступ к аннотациям и всем обычным командам редактирования emacs (выбор регионов и т. Д.).

  2. Стандартная команда emacs shell-command-on-regionможет использоваться для запуска команды с выбранным регионом, переданным ей в качестве стандартного ввода.

  3. Команда (как всегда в emacs) может быть вызвана интерактивно или из функции emacs.

  4. Все, что нужно, - это написать простой сценарий оболочки, который оборачивает необходимую команду и передает получаемый ею ввод.

В моемВ этом случае мне нужно было вызвать curl с несколькими параметрами и строкой JSON, инкапсулирующей запрос POST. Я обнаружил небольшую проблему, потому что emacs передает выбранный текст (регион) как стандартный ввод, а не как аргумент, но этот вопрос SX (и особенно @andy ответ) помог мне понять, как читать стандартный ввод данных в переменную.

...