ADN Open CIS
Сообщество программистов Autodesk в СНГ

28/12/2018

Быстрый просмотр PDF / Пометки в Forge Viewer

Github: https://github.com/wallabyway/offline-pdf-markup

До недавнего времени реализация просмотра PDF во Viewer-е была достаточно запутанной. Теперь всё изменилось с появлением Fast Native PDF rendering в Forge Viewer, разработанного командой BIM360.

Пример доступен здесь.

Предпосылки:

Изначально Forge конвертировал PDF в F2D (PDF -> DWF, затем используя Model Derivative для конвертации в векторный формат F2D), не самый изящный процесс.

Затем, второй подход был... "Пусть сам браузер обработает это". A360 использовал PDF.js для декодирования и рендеринга PDF-файла, но в этом случае рендеринг был слишком медленным. Другой подход "Пусть сама операционная система обработает PDF файл с помощью того просмотрщика, который у неё есть (например, Adobe Acrobat Reader)" приводила к тому, что результаты могли отличаться на разных компьютерах.

Спасибо команде BIM360, предложившей гибридный подход. Используя часть PDF.js, ответственную за парсинг PDF-файла, и быстрый WebGL рендерер Forge Viewer-а, теперь возможно быстро отрисовывать большие PDF-файлы в самом Forge Viewer.

А ещё, поскольку теперь функционал встроен в Forge viewer, Вы можете использовать расширения, такие как, например:

1. Измерения с привязками к граням и углам

2. Пометки с выносками и текстом

3. Просмотр в offline

Все эти возможности показаны в примере по ссылке выше.

Оцените также проиводительность векторного рендеринга по этой ссылке.

Создаем просмотрщик PDF-файла:

1. Сначала нужно инициализировать viewer для просмотра локального файла, затем

2. Загрузите расширение "Autodesk.PDF", следующим образом...

Код - JavaScript: [Выделить]
  1. let viewer;
  2.  
  3. function initializeViewer( pdf ) {
  4.    var options = {
  5.         env: "Local",
  6.         useADP: false
  7.    }
  8.    Autodesk.Viewing.Initializer(options, () => {
  9.       viewer = new Autodesk.Viewing.Private.GuiViewer3D(document.getElementById('forgeViewer'));
  10.       viewer.setTheme("light-theme");
  11.       viewer.start();
  12.       if (!pdf) return;
  13.       viewer.loadExtension('Autodesk.PDF').then( () => {
  14.             viewer.loadModel( pdf , viewer);
  15.             viewer.loadExtension("Autodesk.Viewing.MarkupsCore")
  16.             viewer.loadExtension("Autodesk.Viewing.MarkupsGui")
  17.       });
  18. });

Источник: https://forge.autodesk.com/blog/fast-pdf-viewingmarkup-inside-forge-viewer

Автор перевода: Александр Игнатович

Обсуждение: http://adn-cis.org/forum/index.php?topic=

Опубликовано 28.12.2018
Отредактировано 28.12.2018 в 15:37:56