我正在从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
任何的想法?
是的,这绝对是一个错误!
好的,所以我将两个PDF添加到示例页面(bug1.pdf和bug2.pdf)
但是:ぁzxswい
当加载第二个PDF时,我的代码会撕掉之前的PDF,但看起来它在内存中留下了一些东西。
我尝试了三种拆卸技术......
但是......“这些都不起作用”!!!
源代码:https://wallabyway.github.io/offline-pdf-markup/
所以...
看看控制台错误,看起来这些图形有一些复杂的路径重叠,这对于“Poly2Tri”库来说太棘手了,导致它失败。不幸的是,它在内存中留下了一些东西,并且在后续加载尝试时无法正确加载。
我记录了一个错误(LMV-4525)
使用Viewer v6.5测试并且无法重现问题 - 请参阅实时样本https://github.com/wallabyway/offline-pdf-markup。
我得到的唯一警告是无法解决的字体路径:
警告:getPathGenerator - 忽略字符:“错误:请求尚未解析的对象Helvetica_path_g”。
编辑:
加载另一个:
here
但是同意这应该更优雅地处理,以便您可以继续加载另一个PDF,所以让我们等待我们的工程师回来。与此同时,您现在可以使用我建议的解决方法。