Заметки
Как открыть файл по своей ссылке через ui.viewer
Чтобы добавить предпросмотр файла на свою страницу коробки, не нужно перехватывать все ссылки портала. Подключите ui.viewer и добавьте атрибуты просмотрщика только нужной ссылке.
Фрагмент PHP-шаблона ниже получает готовые $i_file_id и $s_download_url. Первый — ID записи b_file, второй — URL вашего существующего обработчика скачивания, который проверяет доступ к файлу.
<?php
use Bitrix\Main\UI\Extension;
use Bitrix\Main\UI\Viewer\ItemAttributes;
Extension::load('ui.viewer');
$ob_attributes = ItemAttributes::tryBuildByFileId($i_file_id, $s_download_url);
$ob_attributes->setTitle('Схема обмена.pdf')->setGroupBy('request-documents');
?>
<a href="<?= htmlspecialcharsbx($s_download_url) ?>" <?= $ob_attributes ?>>
Открыть документ
</a> ItemAttributes собирает служебные атрибуты под конкретный файл. Если на странице несколько документов, одинаковый setGroupBy объединяет их в группу для листания.
Сам просмотрщик не выдаёт права на файл. Официальный пример требует, чтобы точка скачивания работала с b_file и отдавала содержимое через CFile::viewByUser или Bitrix\Main\Engine\Response\BFile. Просто доступная статическая ссылка и настроенный сервер конвертации ещё не заменяют эту связь.
Если исходно у вас ID объекта Диска, сначала получите связанный ID файла. Передавать эти ID друг вместо друга нельзя.
Документация: ui.viewer.