Acrobat reader ошибка при чтении потока
На свеже установленной терминальной RDS ферме пользователи стали жаловаться, что при попытке открыть любой pdf документ с рабочего стола (локального диска) с помощью Adobe Reader 11 появляется ошибка « Произошла ошибка при открытии данного документа. Отказано в доступе ». При этом при открытии это же документа из сетевой папки (шары) – проблемы не наблюдается (а это совсем уж странно, т.к. сетевая папка априори менее безопасный источник).
Проблема заключалась в том, что начиная с Adobe Reader 10, в Reader по-умолчанию включен Защищенный Режим (Protected Mode), позволяющий запретить пользователям открывать «неавторизованные» pdf файлы, тем самым защищая компьютер пользователя от потенциально вредоносных pdf-документов.
В том случае, если вы в большей степени доверяете источникам получения файлов, вовремя устанавливаете обновления и следите за актуальностью антивирусных баз, Защищенный режим можно отключить. Его можно отключить как персонально для пользователя в интерфейсе Adobe Reader Редактирование -> Установки -> Защита (повышенный уровень) -> снять галку у пункта Включить защищенный режим при запуске.
Совет . В том случае, если велика вероятность попадания сторонних pdf файлов на компьютер пользователя, защищенный режим лучше не отключать, настроив выборочное доверие к определенным путям или файлам в этом же разделе меню в секции Привилегированные места .
Отключить защищенный режим можно и из реестра.
для конкретного пользователя : нужно создать новый параметр с именем bProtectedMode в ветке реестра HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\11.0\Privileged со значением 0 .
Создать параметр в реестре можно с помощью PowerShell. Команда будет следующая:
New-ItemProperty -Path "HKCU:\SOFTWARE\Adobe\Acrobat Reader\11.0\Privileged" –Name "bProtectedMode" -Value 1 -PropertyType "DWord"
для всех пользователей компьютера: в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Adobe\Acrobat Reader\11.0\FeatureLockDownнужно также создать параметр bProtectedMode типа DWORD со значением 0.
New-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Adobe\Acrobat Reader\11.0\FeatureLockDown" –Name "bProtectedMode" -Value 1 -PropertyType "DWord"
Эти настройки также можно распространить на компьютеры домена с помощью групповых политик (GPP). Для этого создайте новую политику GPO, назначьте ее на компьютеры пользователей, и в разделе Computer Configuration -> Preferences ->Windows Settings -> Registry создайте ключи:
для x64:
Keypath: HKLM\SOFTWARE\Wow6432Node\Policies\Adobe\Acrobat Reader\11.0\FeatureLockDown
Value name: bProtectedMode
Value type: REG_DWORD
Value data: 0
для x86
Keypath: HKLM\SOFTWARE\Policies\Adobe\Acrobat Reader\11.0\FeatureLockDown
Value name: bProtectedMode
Value type: REG_DWORD
Value data: 0
Я работаю над захватом вызовов postscript к show и сохранением текущего шрифта и размера шрифта для вывода в текстовых объектах pdf.
Но identify выдает ошибку:
И вывод ghostscript не дает мне подробностей, необходимых для понимания проблемы:
Может ли кто-нибудь помочь мне понять, в чем проблема с файлом pdf, который я печатаю?
1 ответ
Потоки содержимого страницы
Содержимое потоков содержимого страницы выглядит так:
Ошибка здесь в инструкции по выбору шрифта:
Операнд имени шрифта F1 задается не как объект имени PDF (распознается по ведущей косой черте), а как некоторый общий литерал, обычно зарезервированный для операторов инструкций.
(Кстати, эти структуры потока контента излишне раздуты, большинство отдельных текстовых объектов рисуют от одного до трех глифов и имеют (всегда идентичные) собственные инструкции по выбору шрифта. Это не ошибка как таковая, но совершенно ненужная)
Кроме того, как уже указывалось в @ usr2564301, длина потока, похоже, уменьшилась на 1.
Ресурсы шрифтов
Ресурсы шрифтов выглядят так:
Прежде всего, проблема в том, что там: как уже указывалось в @KenS, правильное написание - Подтип , а не Подтип .
Есть еще одна проблема в том, чего там нет : поэтому словари ресурсов коротких шрифтов до PDF 1.7 были разрешены только для стандартных 14 шрифтов, а для PDF 2.0 больше не разрешены. Поскольку Palatino-Roman явно не является стандартным 14 шрифтом, ресурс в любом случае неполный.
Согласно Таблице 109 - Записи в словаре шрифтов Типа 1 в ISO 32000-2,
- Тип , Подтип и BaseFont являются обязательными ,
- FirstChar , LastChar , Ширина и FontDescriptor являются обязательными, но в PDF 1.0–1.7 необязательны для стандартные 14 шрифтов ,
- Имяобязательно в PDF 1.0, необязательно в PDF 1.1–1.7, не рекомендуется в PDF 2.0 и
- Кодировка и ToUnicode всегда Необязательны .
В зависимости от используемой вами программы просмотра PDF-файлов требования, вероятно, будут казаться более мягкими, но любой обработчик PDF-файлов может обоснованно отклонить ваши PDF-файлы, если вы не выполните требования спецификации.
Перекрестные ссылки
@ usr2564301 также упоминает, что многие записи таблицы перекрестных ссылок (а также ссылка на начало самой таблицы перекрестных ссылок) отключены на 1.
На самом деле они указывают не на литерал номер объекта / xref , а на пробел перед ним. Поскольку перед числом / литералом следует игнорировать только пробелы, многие обработчики PDF этого не заметят.
Adobe Acrobat Reader это любимый PDF-ридер многих пользователей, который существует уже много лет. Однако здесь есть свои проблемы. Честно говоря, эти проблемы возникают в первую очередь из-за файла PDF, над которым работаете.
Если вы получаете ошибку Adobe 109 при попытке открыть или сохранить файл PDF, этот раздел содержит следующие исправления, которые помогут вам избавиться от ошибки раз и навсегда.
- Создайте PDF-файл заново или загрузите его снова.
- Переключитесь с браузера на программу для чтения PDF-файлов или наоборот.
- Обновите программу для чтения PDF-файлов.
- Сохраните документ как файл .PS.
- Используйте Adobe Acrobat DC.
- Восстановите установленную программу Acrobat Reader.
Продолжайте читать, пока я объясню шаги, связанные с решениями, перечисленными выше.
1]Создайте файл PDF заново или загрузите его снова.
2]Переключитесь с браузера на программу для чтения PDF-файлов или наоборот.
Некоторые файлы PDF слишком сложны или велики для веб-браузеров. Если вы открываете PDF-файл в браузере и все вышеперечисленные исправления не устраняют ошибку 109, попробуйте просмотреть документ в автономном средстве чтения PDF-файлов. Если у вас возникла проблема с настольным приложением, попробуйте открыть его в браузере.
3]Обновите программу чтения PDF-файлов Acrobat.
Причиной ошибки 109 может быть несовместимость PDF-файла с программой Acrobat Reader, с помощью которой вы пытаетесь его открыть. Например, более новые версии Adobe Acrobat Reader не поддерживают старые файлы PDF. Либо они не откроются, либо выдадут ошибку 109. Обновление приложения также устранит проблемы с безопасностью в более старой версии.
Посетите Adobe Acrobat Читательский сайт и скачайте последнюю версию ридера. Используйте его, чтобы обновить существующую программу для чтения PDF-файлов, и попробуйте снова открыть файл. Если проблема не исчезнет, перейдите к следующему решению ниже.
4]Сохраните документ как файл .PS.
По какой-то странной причине пользователи исправили ошибку 109, преобразовав файл PDF с ошибками в формат. .ps формат. Сначала закройте PDF-документ, если он открыт. Перейдите в каталог, в котором хранится файл, и щелкните значок Вид меню. Проверить Расширения имени файла варианты на ленте.
Щелкните правой кнопкой мыши PDF-файл, который не открывается, и переименуйте расширение файла на .ps. После этого сохраните файл в формате PDF и проверьте, появляется ли ошибка 109.
5]Используйте Adobe Acrobat DC
Переключение на выпуски Adobe Acrobat DC Standard или Pro может решить эту проблему. Но сначала вам нужно полностью удалить Acrobat Reader с помощью этого Adobe Reader и Acrobat. Инструмент для чистки.
Это удалит вашу личную информацию, настройки и предпочтения.
Когда Acrobat Reader удален с вашего компьютера, скачать либо Стандартная или профессиональная версия Acrobat DC.
6]Восстановите установку Acrobat Reader.
Чтобы использовать эту опцию, запустите приложение и нажмите на Помощь меню.
Выберите Восстановить установку Adobe Reader вариант и позволить системе выполнить работу. По завершении процесса восстановления перезагрузите компьютер и попробуйте снова открыть PDF-файл.
Описание ошибки An internal error occurred
И так у меня есть новенькая Терминальная ферма Remote Desktop Services High Availability на базе Windows Server 2019. Я накатил на нее весь набор программ и успешно перевел на нее пользователей организации, путем миграции перемещаемых профилей. В какой-то момент стали поступать жалобы, что при выборе в проводнике WIndows любого файла в формате PDF появляется вот такая ошибка:
В английском варианте она звучит вот так:
После закрытия данного окна с ошибкой, PDF файл корректно открывается. На серверах установлена последняя версия Acrobat Reader DC 2020.013.20064.
Методы устранения ошибки "An internal error occurred"
- Отключение повышенного уровня защиты через Acrobat Reader DC
- Создание ключа реестра, который так же отключает повышенный уровень защиты
- Переустановка Acrobat Reader DC
- Проверка прав доступа на
Переустановка Acrobat Reader DC
Первое с чего бы я начал, это переустановка самой программы. Это может устранить большую часть проблем, которые могут вылезти если дистрибутив поврежден. Для этого откройте окно выполнить и введите:
В результате чего у вас будет открыта оснастка "Программы и компоненты". Найдите в списке приложений Acrobat Reader DC и произведите его удаление.
После чего перезагрузите компьютер или сервер. Далее установите приложение с нуля.
Как отключить повышенный уровень защиты
Сразу хочу отметить, что если вы отключите данную защиту, то у вас может перестать отображаться область предварительного просмотраитак, чтобы отключить защищенный режим при запуске вам нужно открыть Acrobat Reader DC и нажать сочетание клавиш CTRL+K или же открыть меню "Редактирование - Установки (Edit - Preferences)"
Далее открываем раздел "Защита (повышенный уровень) Security (Enhanced)", где вам необходимо снять две галки:
- Включить защищенный режим при запуске (Enable Protected View Mode at Startu);
- Включить повышенный уровень защиты (Enable increased protection level)
Обратите внимание, что данная настройка будет активна только после перезагрузки вашего Windows. В результате чего должно пропасть окно "Произошла внутренняя ошибка (An internal error occurred)" при запуске Acrobat Reader DC.
Как отключить повышенный уровень защиты через реестр
Если хотите деактивировать защищенный режим через реестр, а у этого огромный плюс, который заключается в том, что если у вас терминальная ферма как у меня состоит из 50 RDSH хостов, то ходить по каждому это очень долго, можно конечно сделать скрипт на PowerShell и создать ключ реестра удаленно, но плохо это тем, что если появится новый хост или старый будет заменен ключ автоматически не появится, а хочется полную автоматику и использование всех инструментов Active Directory. Данный ключ я вам предлагаю при желании распространять через групповую политику, о том как это делать я писал. Ниже я лишь приведу саму ветку и значение ключа.
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Adobe\Acrobat Reader\11.0\FeatureLockDownТам нужно создать ключ bProtectedMode RED_DWORD со значением "0". Не забываем рестартнуть вашу систему.
Проверка прав доступа
Еще одним моментом, который может влияет на наличие ошибки "An internal error occurred", это слетевшие права в профиле. Путь к профилю:
Обратите внимание, что данная папка скрыта и нужно включить ее отображение в Windows. Далее откройте свойства и перейдите на вкладку "Безопасность - Дополнительно". Посмотрите кто является владельцем папки и есть ли у вас вообще полные права на нее. В моем примере, папка Adobe принадлежит администраторам сервера, это нормально, но у моей основной учетной записи полные права. Если у вас не так, то измените это.
Дополнительно
Если у вас все еще появляется окно "Произошла внутренняя ошибка (An internal error occurred)", то попробуйте запускать Acrobat Reader DC в режиме администратора. Для этого откройте его свойства. Далее выберите вкладку "Совместимость" и поставьте галку "Выполнять эту программу от имени администратора".
Читайте также: