Вопрос или проблема
при открытии определенного pdf-файла, evince
решает открыть его в “презентационном режиме”.
Я вижу в странице man, что evince имеет опцию -s
для открытия в презентационном режиме, но я не вызывал её. Я просто открываю все pdf-файлы как evince file.pdf
Почему-то evince сам решил открыть этот конкретный вид pdf-файла в презентационном режиме.
Другие pdf-файлы открываются нормально в обычном окне.
Как я могу отключить это поведение?
Следуя ответу dodrg, вам нужно изменить метаданные PDF, чтобы изменить поле PageMode
. Можно использовать различные значения (источник):
-
UseNone
: Когда документ открывается в просмотрщике, он показывает только страницы (панели закладок, вложений, миниатюр страниц и слоев скрыты). -
UseOutlines
: Когда документ открывается в просмотрщике, он показывает страницы и открывает панель закладок для отображения контуров (закладок). -
UseThumbs
: Когда документ открывается в просмотрщике, он показывает страницы и открывает панель миниатюр страниц для отображения миниатюр. -
FullScreen
: Когда документ открывается в просмотрщике, он показывает страницы в полноэкранном режиме (без панели меню, управления окнами или любого другого окна). -
UseOC
: Когда документ открывается, например, в Adobe Acrobat Reader, Reader показывает страницы и открывает панель группы опционного контента (панель слоев). -
UseAttachments
: Когда документ открывается в просмотрщике, он показывает страницы и открывает панель вложений для отображения вложений.
Существуют различные инструменты для редактирования метаданных PDF, такие как pdftk
, exiftool
и qpdf
. Но по тестированию, похоже, что только pdftk
действительно может добавить информацию в это поле метаданных.
Чтобы изменить это поле метаданных, вы можете использовать команду
pdftk file.pdf update_info info.txt output output.pdf
где info.txt
содержит
PageMode: UseNone
Почему-то evince сам решил открыть этот конкретный вид pdf в этом идиотском режиме.
Это “решение” связано с особенностью PDF:
/PageMode /FullScreen
Вы можете захотеть навсегда отключить это в самом PDF, заменив его на
/PageMode /UseNone
… заполнив 3 пробелами в конце, чтобы сохранить размер файла.
Учтите, что evince запоминает последний презентационный режим файла, поэтому вам может понадобиться сначала переключить ранее просмотренный PDF в оконный режим.
Очень полезно для часто используемых PDF. Но для этого вопроса это только обходной путь.
Пример того, как сделать патч:
sed -zE 's|(<<[^>]*/PageMode\s*)/FullScreen|\1/UseNone |' Your.PDF > YourPatched.PDF
Я бы не стал делать -i
на месте, так как эта строка поиска не полностью надежна для всех возможных случаев.
Для меня использование pdftk update_data
не сработало, вероятно, потому что я не смог понять формат, который он требует для info.txt. (Ключ PageMode
изначально не присутствовал, и строка “\PageMode
” не присутствовала в pdf-файле, его открытие в текстовом редакторе показывает, что он в основном состоит из stream
ов бинарных данных)
Тем не менее, просто
pdftk ./input.pdf cat output ./output.pdf
сработало в моем случае.
Ответ или решение
Когда вы открываете конкретный PDF-файл с помощью evince
, он может автоматически переходить в режим «презентации» из-за метаданных файла. Это связано с тем, что в PDF-документе может быть установлен параметр /PageMode /FullScreen
, который указывает программе открывать документ в полноэкранном режиме. Это поведение не является ошибкой со стороны evince
, а результатом настройки, сохраненной в самом PDF-файле.
Чтобы отключить это поведение и заставить evince
открывать PDF в обычном окне, вам необходимо изменить метаданные документа. Вы можете использовать утилиты для редактирования PDF, такие как pdftk
, exiftool
или qpdf
, но наиболее достаточно использовать pdftk
, который позволяет обновлять информацию в PDF.
Вот шаги, которые необходимо выполнить:
-
Создайте текстовый файл
info.txt
с содержимым:PageMode: UseNone
Это значение указывает программе, чтобы она не открывала файл в полноэкранном режиме.
-
Используйте следующую команду для обновления PDF-файла с помощью
pdftk
:pdftk ваш_файл.pdf update_info info.txt output новый_файл.pdf
Это создаст новый файл
новый_файл.pdf
, где установлено значениеPageMode
наUseNone
. -
Если у вас возникли проблемы с использованием
update_info
, вы можете попробовать следующую команду для упрощенного преобразования PDF:pdftk ./ваш_файл.pdf cat output ./новый_файл.pdf
Эта команда создаст новый PDF, который удалит любые ненужные метаданные, включая режим просмотра.
Если вы хотите вручную отредактировать файл, вы можете использовать такие инструменты, как sed
, чтобы изменить его содержимое. Например:
sed -zE 's|(<<[^>]*/PageMode\s*)/FullScreen|\1/UseNone |' Ваш_Файл.pdf > Новый_Файл.pdf
Однако такой подход может быть рисковым, если вы не уверены в формате содержимого.
После выполнения одной из этих процедур PDF-документ будет открываться в обычном режиме, и evince
больше не будет переключаться в режим презентации.
Если вы столкнулись с проблемами или дополнительные вопросы, пожалуйста, дайте знать, и я помогу вам!