【问题标题】:Autodesk Forge: Loading PDF does not trigger onItemLoadSuccessAutodesk Forge:加载 PDF 不会触发 onItemLoadSuccess
【发布时间】:2019-06-05 05:33:11
【问题描述】:

我们有一个正在运行的应用程序当前可以处理 3D 和 2D 文件,并且在加载 3D 文件和 DWG 时不会遇到任何问题。

但是当尝试加载 PDF 时,我的“onItemLoadSuccess”或“onItemLoadFail”都没有运行

Autodesk.Viewing.Initializer(options, function onInitialized() {

    // Select the container for the viewer
    viewerApp = new Autodesk.Viewing.ViewingApplication(container);

    // Load settings, i.e extension manager
    viewerApp.registerViewer(viewerApp.k3D, 
Autodesk.Viewing.Private.GuiViewer3D, { extensions: [ 'ExtensionManager'] });

    // Select model to load defined by URN 
    viewerApp.loadDocument(documentId, onDocumentLoadSuccess, onDocumentLoadFailure);
  });
}

function onDocumentLoadSuccess(doc) {
  var viewables = viewerApp.bubble.search({ 'type': 'geometry' });
  if (viewables.length === 0) {
    console.error('Document contains no viewables.');
    return;
  }

  // Choose any of the avialble viewables
  viewerApp.selectItem(viewables[0], onItemLoadSuccess, onItemLoadFail);
}

function onItemLoadSuccess(viewer, item) {
  console.log('onItemLoadSuccess()!');
}

function onItemLoadFail(errorCode) {
  console.error('onItemLoadFail() - errorCode:' + errorCode);
}

PDF 文件仍会打开并加载,所以我想知道是否有不同的方式来运行 onItemLoadSuccess 函数,或者我们必须做一些不同的事情来确保我们的 PDF 也被正确加载。

非常感谢任何帮助!

【问题讨论】:

    标签: javascript autodesk-forge autodesk-viewer forge


    【解决方案1】:

    (添加到 Bryan 的回答中......)

    我为此写了一篇博文。查看演示和示例代码,以帮助回答有关“onItemLoadSuccess / onItemLoadFail”事件的问题。

    博客:https://forge.autodesk.com/blog/fast-pdf-viewingmarkup-inside-forge-viewer

    演示:https://wallabyway.github.io/offline-pdf-markup/

    希望有帮助!

    【讨论】:

    • 对查看器可以加载的 PDF 文件是否有任何限制,该仓库中的示例工作正常,但我的一些文件产生了混乱的结果...我在您的网站上记录了一个问题回购但没有回应:'(github.com/wallabyway/offline-pdf-markup/issues/2
    • 经过进一步测试并确保我加载了 v6.4,我现在似乎只遇到“非标准”字体的问题。您是否知道某个地方是否有“已接受”字体的列表,或者知道是否有计划为未知字体处理某种后备功能?
    【解决方案2】:

    从 Viewer v6.3 开始,您可以直接使用 Autodesk.PDF 加载 PDF 并像其他模型一样将回调传递给 loadModel

      Autodesk.Viewing.Initializer(options, function() {
        viewer.start()
        viewer.loadExtension('Autodesk.PDF').then(function() {
            viewer.loadModel('/path/to/pdf', { page: 1 }, onLoadSuccess, onLoadFail);
        });
      });
    

    在此处查看发行说明:https://forge.autodesk.com/blog/viewer-release-notes-v-63

    【讨论】:

    • 谢谢!我会尝试。但是,我在查找放置在 Bim360 上的 PDF 的路径时遇到了一些问题,因为这里的 URN 不够,对吗?
    • 不用担心。您可以按照此处的步骤找到您的商品的网址:forge.autodesk.com/en/docs/data/v2/tutorials/download-file
    • 更进一步。我现在收到两个错误:Uncaught TypeError: l.createNativeFontFace is not a function 和 Uncaught (in promise) TypeError: Cannot read property 'polygon' of null - 知道这可能是什么原因吗?
    • 恐怕仅凭这些错误消息不足以让我深入了解您的问题。你能告诉我们你有问题的代码吗,比如使用 jsfiddle 吗?
    • 很抱歉回来晚了,但刚刚对其进行了更多测试。似乎一旦 PDF 中有文本,它就会出现问题。这是一个已知的问题?还是它只支持特定的字体列表?当没有文字时,它就像一个魅力!
    猜你喜欢
    • 2019-12-06
    • 2020-09-12
    • 2020-04-06
    • 2020-11-24
    • 2022-01-02
    • 2018-09-26
    • 2016-11-15
    • 2021-02-25
    • 2020-08-03
    相关资源
    最近更新 更多