Autodesk Forge Viewer PDF 捕捉和缩放问题

Posted

技术标签:

【中文标题】Autodesk Forge Viewer PDF 捕捉和缩放问题【英文标题】:Auto desk Forge Viewer PDF Snap and Zoom Issue 【发布时间】:2022-01-13 14:31:39 【问题描述】:

使用 forge 查看器查看 PDF 时,是否可以启用 Snap 功能进行测量(与查看模型时相同)。另外,是否可以更改缩放级别,即我们想要放大到比默认最大值更近的程度?

这两个在 BIM360 中都是可能的,所以我希望在我们的应用程序中也可以,请您建议。

目前我们使用的是 v7 查看器。我们还添加了 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,然后将其加载到查看器。在旧的方式中,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,但默认会加载,您无需显式加载。

【讨论】:

感谢小东的回复。是的,当我们从本地实例加载 pdf 文件时,它工作得非常好。但我期待远程环境的解决方案,这意味着我们需要直接加载 BIM 360 项目文件(它可以是任何类型的文件,如 rvt、DWG、pdf ......等)。那时,我们将获得翻译密钥。请就在这种情况下我们需要如何处理 pdf 文件提出建议。注意:出于安全考虑,我们不想将文件保存在本地。 如前所述,它翻译 PDF,这意味着在平铺图像中,我认为没有测量和缩放比例的解决方案。您可能需要暂时从 BIM360(到您的服务器)下载 PDF 供您的客户查看、自定义标记等,之后,您可以从您的服务器中删除它

以上是关于Autodesk Forge Viewer PDF 捕捉和缩放问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Autodesk Forge Viewer 在 PDF 文件中添加 Puspin

如何将 Autodesk Forge Viewer 嵌入移动应用程序?

在 Forge Viewer 上查看原生 PDF 和 DWF,无需翻译

Autodesk-forge 我们可以在查看器上打开 PDF 文件吗[关闭]

将模型从 Autodesk Viewer 加载到 Forge Viewer

Autodesk Forge Viewer 透明背景