Проблема автоматической привязки и масштабирования PDF-файлов в программе просмотра desk Forge

#autodesk-forge

#autodesk-forge

Вопрос:

Возможно ли при использовании forge Viewer для PDF-файлов включить функцию привязки для измерения (так же, как при просмотре моделей). Кроме того, можно ли изменить уровень масштабирования, т.Е. Мы хотим увеличить масштаб ближе, чем максимум по умолчанию?

Оба они возможны в BIM360, поэтому я надеюсь, что это возможно и в нашем приложении, не могли бы вы посоветовать.

В настоящее время мы используем v7 Viewer. Мы также добавили расширение snap и метод setZoomInLimitFactor. Но все же мы не можем получить функцию привязки и увеличения масштаба для файлов PDF.

 function launchViewer(urn, viewableId) {
        var options = {
            env: 'AutodeskProduction',
            getAccessToken: getForgeToken,
            api: 'derivativeV2'   (atob(urn.replace('_', '/')).indexOf('emea') > -1 ? '_EU' : '') // Both BIM 360 US and EU regions
        };

        Autodesk.Viewing.Initializer(options, () => {
            viewer = new Autodesk.Viewing.GuiViewer3D(document.getElementById('forgeViewer'));
            viewer.start();
            var documentId = 'urn:'   urn;
            Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
        });

        function onDocumentLoadSuccess(doc) {
            // if a viewableId was specified, load that view, otherwise the default view
            var viewables = (viewableId ? doc.getRoot().findByGuid(viewableId) : doc.getRoot().getDefaultGeometry());
            viewer.loadDocumentNode(doc, viewables).then(i => {
                viewer.loadExtension('Autodesk.VisualClusters');
                viewer.loadExtension('Autodesk.Snapping');
                viewer.loadExtension("Autodesk.Viewing.MarkupsCore");
                viewer.loadExtension("Autodesk.Viewing.MarkupsGui");
                viewer.loadExtension('Autodesk.Measure');
                viewer.loadExtension('Autodesk.DefaultTools.NavTools');
                viewer.loadExtension('Autodesk.PDF');
                viewer.loadExtension('Autodesk.DocumentBrowser');
                viewer.loadExtension('Autodesk.Viewing.ZoomWindow');
                // any additional added here
            });
            viewer.navigation.setZoomInLimitFactor(2500);
            console.log(viewer.navigation.getZoomInLimitFactor());
        }

        function onDocumentLoadFailure(viewerErrorCode) {
            console.error('onDocumentLoadFailure() - errorCode:'   viewerErrorCode);
        }
    }
 

пожалуйста, сообщите, если мы что-то пропустили. Заранее спасибо.

Ответ №1:

похоже, вы используете старый способ перевода PDF, а затем загружаете его в Viewer. По-старому PDF-файл преобразуется в плиточные изображения. Поэтому привязка может не работать, а максимальное масштабирование ограничено из-за максимального разрешения плиточных изображений.

На самом деле, Forge Viewer поддерживает прямую загрузку собственного PDF-файла без перевода. Поскольку он является родным, это векторная графика. Привязка будет работать, и ее можно увеличить до большого / очень малого масштаба.

Чтобы воспроизвести его, загрузите пример проекта, https://github.com/Autodesk-Forge/viewer-javascript-offline.sample и замените строку на ваш локальный PDF-файл

   var options = {
      'env' : 'Local',
      'document' : './my_PDF_folder/mytest.pdf'
  };
 

Эта функция из расширения Autodesk.PDF, но он будет загружен по умолчанию, вам не нужно загружать его явно.

Комментарии:

1. Спасибо за ответ Xiaodong. Да, он работает абсолютно нормально, когда мы загружаем файл PDF из локального экземпляра. Но я ожидаю решения для удаленной среды, что означает, что нам нужно напрямую загружать файлы проекта BIM 360 (это могут быть файлы любого типа, такие как rvt, DWG, pdf … и т. Д.). В этот момент мы получим ключ перевода. Пожалуйста, сообщите, как нам нужно обрабатывать файлы PDF в этом сценарии. Примечание: мы не хотим сохранять файл локально из соображений безопасности.

2. Как уже было сказано, он переводит PDF, что означает, что в плиточных изображениях я не думаю, что есть решение с измерением и масштабированием масштаба. возможно, вам придется временно загрузить PDF-файл с BIM360 (на ваш сервер) для просмотра вашим клиентом, для пользовательской разметки и т. Д., И после этого вы можете удалить его со своего сервера