PDF在Forge Viewer上查看无法显示由TEKLA创建的2D模型 - 无法映射字体Arial

问题描述 投票:0回答:2

我正在从Michael Beale https://forge.autodesk.com/blog/fast-pdf-viewingmarkup-inside-forge-viewer发布的一个例子开始研究PDF查看器。它适用于大量不同类型的文档。我的问题是加载了多次由TEKLA导出为PDF的2d模型,这是第一次运行良好但是以下失败在控制台上显示错误:

font-engine.js:51 Failed to map font Arial
value @ font-engine.js:51
value @ font-engine.js:59
value @ LmvCanvasContext.js:594
paintChar @ pdf.js:11506
showText @ pdf.js:11635
executeOperatorList @ pdf.js:11037
(anonymous) @ pdf.js:9541
_next @ pdf.js:9537
(anonymous) @ pdf.js:9528
requestAnimationFrame (async)
_scheduleNext @ pdf.js:9527
_continue @ pdf.js:9520
operatorListChanged @ pdf.js:9510
_renderPageChunk @ pdf.js:8503
(anonymous) @ pdf.js:9026
_onComObjOnMessage @ pdf.js:12705
path2d.js:676 Uncaught (in promise) TypeError: Cannot read property 'triangulationFailed' of null
    at d.fill (path2d.js:676)
    at e.value (LmvCanvasContext.js:531)
    at e.value (LmvCanvasContext.js:595)
    at e.paintChar (pdf.js:11506)
    at e.showText (pdf.js:11635)
    at executeOperatorList (pdf.js:11037)
    at pdf.js:9541
    at new Promise (<anonymous>)
    at t._next (pdf.js:9537)
    at pdf.js:9528

这是代码片段:

function initializeViewer(pdf) {
    if (viewer) {
      console.log('loading');
      viewer.impl.unloadCurrentModel()
      if (markup) 
        markup.hide();
      viewer.loadModel(pdf, viewer);
      return;
    }

    var options = {
        env: "Local",
        useConsolidation: true,
        useADP: false,
    }

    Autodesk.Viewing.Initializer(options, () => {
      viewer = new Autodesk.Viewing.Private.GuiViewer3D(document.getElementById('forgeViewer'));
      viewer.setTheme("light-theme");
      viewer.start();
      if (!pdf) return;


      viewer.loadExtension('Autodesk.PDF').then( () => {
            viewer.loadModel(pdf, viewer);
            viewer.loadExtension("Autodesk.Viewing.MarkupsCore")
            viewer.loadExtension("Autodesk.Viewing.MarkupsGui")
      });
    });

你可以在这里找到一些PDF文件github

任何的想法?

autodesk-forge
2个回答
0
投票

是的,这绝对是一个错误!

好的,所以我将两个PDF添加到示例页面(bug1.pdf和bug2.pdf)

但是:ぁzxswい

Why it breaks...

当加载第二个PDF时,我的代码会撕掉之前的PDF,但看起来它在内存中留下了一些东西。

我尝试了三种拆卸技术......

  1. unloadModel()
  2. viewer.tearDown()
  3. 从头开始完全初始化查看器(删除第39-46行)

但是......“这些都不起作用”!!!

源代码:https://wallabyway.github.io/offline-pdf-markup/

所以...

看看控制台错误,看起来这些图形有一些复杂的路径重叠,这对于“Poly2Tri”库来说太棘手了,导致它失败。不幸的是,它在内存中留下了一些东西,并且在后续加载尝试时无法正确加载。

我记录了一个错误(LMV-4525)


0
投票

使用Viewer v6.5测试并且无法重现问题 - 请参阅实时样本https://github.com/wallabyway/offline-pdf-markup

我得到的唯一警告是无法解决的字体路径:

警告:getPathGenerator - 忽略字符:“错误:请求尚未解析的对象Helvetica_path_g”。

编辑:

加载另一个:

here

但是同意这应该更优雅地处理,以便您可以继续加载另一个PDF,所以让我们等待我们的工程师回来。与此同时,您现在可以使用我建议的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.