我正在从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")
});
});
您可以在github
中找到一些PDF文件有什么主意吗?
答案 0 :(得分:0)
使用Viewer v6.5进行了测试,不幸的是无法重现这些问题-请参见实时示例here。
我得到的唯一警告是关于无法解决的字体路径:
警告:getPathGenerator-忽略字符:“错误:正在请求尚未解决的对象Helvetica_path_g”。
编辑:
要加载另一个:
viewer.finish();
Autodesk.Viewing.theExtensionManager.unregisterExtension('Autodesk.PDF');
viewer = new Autodesk.Viewing.Private.GuiViewer3D(myViewerDiv);
...//reinitialize and load the PDF again
但是,请妥善处理此问题,以便您可以立即立即加载另一个PDF,因此让我们等待工程返回。同时,您可以使用我现在建议的解决方法。
答案 1 :(得分:0)
是的,那绝对是一个错误!
好的,所以我在示例页面中添加了两个PDF(bug1.pdf和bug2.pdf)
演示:https://wallabyway.github.io/offline-pdf-markup/
当加载第二个PDF时,我的代码将先前的PDF撕了下来,但是看起来它在内存中留下了一些东西。
我尝试了三种拆卸技术...
但是...“这些都不起作用” !!
源代码:https://github.com/wallabyway/offline-pdf-markup
所以...
查看控制台错误,似乎那些图形具有一些复杂的路径重叠,这对于“ Poly2Tri”库而言过于棘手,从而导致其失败。不幸的是,它随后在内存中留下了一些东西,并且在随后的加载尝试中无法正确加载。
我已记录了一个错误(LMV-4525)