Вопрос или проблема
Evince – это мой стандартный просмотрщик PDF. Если я нажимаю на ссылку file:///home/patrick/A.pdf
, то открывается Evince и отображается A.pdf
.
У меня есть PDF-файл с именованными местами назначения. Я хотел бы, чтобы при нажатии на file:///home/patrick/A.pdf#B
меня переводило к именованному месту назначения B
в файле A
. Как я могу включить эту функциональность?
evince --named-dest=B A.pdf
работает очень хорошо, но я хочу, чтобы это происходило автоматически при нажатии на ссылку.
Ответ или решение
Для того чтобы настроить обработку ссылок на именованные цели в PDF-документах с помощью Evince, необходимо рассмотреть некоторые ключевые аспекты. Ваша цель заключается в автоматизации процесса открытия PDF-файла с конкретной именованной целью при нажатии на ссылку.
1. Основы работы Evince
Evince — это популярный PDF-ридер, который, помимо прочего, поддерживает возможность открытия документов с использованием именованных целей. Это означает, что вы можете указать определенные разделы документа, на которые должно происходить обращение.
2. Понимание структуры URL
Ссылка, которую вы хотите использовать:
file:///home/patrick/A.pdf#B
это стандартный формат ссылки, где file:///home/patrick/A.pdf
указывает на местоположение файла, а #B
ссылается на именованную цель, заданную в документе PDF.
3. Проблема автоматизации
К сожалению, Evince не поддерживает открытие PDF-документа с указанием именованной цели по умолчанию при переходе по ссылке, однако существуют некоторые обходные пути, которые могут помочь вам достичь желаемого результата.
4. Решение с использованием класса xdg-open
Одним из решений является использование xdg-open
, который предназначен для открытия приложений в соответствии с установленными ассоциациями файлов. Настройте обработчик ссылок таким образом, чтобы использовать команду, которая позволяет передавать необходимые параметры в Evince.
5. Создание скрипта для обработки ссылок
Создайте простой скрипт, который будет принимать аргумент с именованной целью и передавать его в Evince. Вот пример такого скрипта на Bash:
#!/bin/bash
# Получаем URL из первого аргумента
URL="$1"
# Извлекаем PDF и именованную цель
PDF_FILE=$(echo $URL | cut -d '#' -f 1)
NAMED_DEST=$(echo $URL | cut -d '#' -f 2)
# Открываем PDF с указанием именованной цели
evince --named-dest="$NAMED_DEST" "$PDF_FILE"
Сохраните этот скрипт, например, как open_pdf.sh
и сделайте его исполняемым:
chmod +x open_pdf.sh
6. Настройка xdg-open
Теперь вам нужно изменить настройки xdg-open
, чтобы он использовал ваш скрипт для открытия PDF-файлов. Вы можете сделать это, создав новый MIME-тип для PDF, который будет вызывать ваш скрипт.
- Создайте файл
~/.local/share/applications/pdf-handler.desktop
с содержимым:
[Desktop Entry]
Type=Application
Name=PDF Link Handler
Exec=/path/to/open_pdf.sh %U
Terminal=false
MimeType=application/pdf;
- Обновите базу данных MIME:
update-desktop-database ~/.local/share/applications
7. Тестирование
Теперь, когда вы нажимаете на ссылку file:///home/patrick/A.pdf#B
, должно автоматически открываться окно Evince с вашим документом на указанной именованной цели.
Заключение
Таким образом, вы смогли настроить автоматическую обработку именованных целей в PDF-документах при использовании Evince. Этот подход может потребовать некоторой доработки в зависимости от вашей системы, но он обеспечивает мощный способ работы с PDF-документами, содержащими именованные ссылки.