使用 PDF 扩展在 Forge Viewer 中呈现 PDF - pdf.worker.js 抛出警告
Render PDF in Forge Viewer with PDF Extension - pdf.worker.js throws warning
在尝试渲染通过我们自己的 API 提供的 PDF 时,pdf.worker.js
抛出以下警告并且渲染的 PDF 始终保持全白。
我只看到这个(它是一个宽 PDF,但在演示中正确呈现):
我们的客户端应用程序由 angular 提供服务,但我无法完全概括这个问题。使用一个简单的新 angular 应用程序,我能够呈现一个 PDF 文件,由我们的 API 提供,但在我更大的客户端应用程序中,上述错误不断发生,我不知道为什么。
我正在使用此代码加载 PDF,其灵感来自 Autodesk GitHub and this Blog Entry。
Autodesk.Viewing.Initializer({ env: 'Development', useADP: false }, () => {
const viewer = new Autodesk.Viewing.GuiViewer3D(
document.getElementById('forgeViewer'),
);
viewer.start();
const url =
'http://api.pdfFileToRender.pdf';
viewer.loadExtension('Autodesk.PDF').then(() => {
viewer.loadModel(
url,
{},
model => {
console.error('Success: ', model);
},
(errorCode, errorMessage, errorArgs) => {
console.error('Error Code: ', errorCode);
console.error('Error Msg: ', errorMessage);
console.error('Error Args: ', errorArgs);
},
);
viewer.loadExtension('Autodesk.Viewing.MarkupsCore');
viewer.loadExtension('Autodesk.Viewing.MarkupsGui');
});
});
loadModel
函数也调用 onSuccessCallback
,我在控制台中看到“成功”。
对我来说,无法将 PDF 扩展集成到我的客户端应用程序中。有谁知道解决方案或对此有提示,我很高兴。
对我来说也很重要,PDF 在本地呈现,不会上传到任何 Forge API。
我使用 Angular 11.2.7 和 Typescript 4.1.5 为客户端应用程序提供服务。我正在使用版本 7.36.0 加载 ForgeViewer,但其他版本也会出现问题。
对于任何感兴趣的人,我都能弄明白。我们自己的应用程序正在定义数组原型函数。然而,这是 pdf.js 的一个问题,它被 Forge 的 PDF 扩展使用。
根本问题是像这样定义数组原型函数:
Array.prototype.myFunction = function(...) {...}
我们要么排除自己的数组函数,要么这样写:
Object.defineProperty(Array.prototype, 'myFunction', {value: function(...) {...})
因此,如果您的应用程序定义了数组原型函数,请使用 Object.defineProperty
或根本不使用它们。这似乎解决了问题。干杯。
在尝试渲染通过我们自己的 API 提供的 PDF 时,pdf.worker.js
抛出以下警告并且渲染的 PDF 始终保持全白。
我只看到这个(它是一个宽 PDF,但在演示中正确呈现):
我们的客户端应用程序由 angular 提供服务,但我无法完全概括这个问题。使用一个简单的新 angular 应用程序,我能够呈现一个 PDF 文件,由我们的 API 提供,但在我更大的客户端应用程序中,上述错误不断发生,我不知道为什么。
我正在使用此代码加载 PDF,其灵感来自 Autodesk GitHub and this Blog Entry。
Autodesk.Viewing.Initializer({ env: 'Development', useADP: false }, () => {
const viewer = new Autodesk.Viewing.GuiViewer3D(
document.getElementById('forgeViewer'),
);
viewer.start();
const url =
'http://api.pdfFileToRender.pdf';
viewer.loadExtension('Autodesk.PDF').then(() => {
viewer.loadModel(
url,
{},
model => {
console.error('Success: ', model);
},
(errorCode, errorMessage, errorArgs) => {
console.error('Error Code: ', errorCode);
console.error('Error Msg: ', errorMessage);
console.error('Error Args: ', errorArgs);
},
);
viewer.loadExtension('Autodesk.Viewing.MarkupsCore');
viewer.loadExtension('Autodesk.Viewing.MarkupsGui');
});
});
loadModel
函数也调用 onSuccessCallback
,我在控制台中看到“成功”。
对我来说,无法将 PDF 扩展集成到我的客户端应用程序中。有谁知道解决方案或对此有提示,我很高兴。
对我来说也很重要,PDF 在本地呈现,不会上传到任何 Forge API。
我使用 Angular 11.2.7 和 Typescript 4.1.5 为客户端应用程序提供服务。我正在使用版本 7.36.0 加载 ForgeViewer,但其他版本也会出现问题。
对于任何感兴趣的人,我都能弄明白。我们自己的应用程序正在定义数组原型函数。然而,这是 pdf.js 的一个问题,它被 Forge 的 PDF 扩展使用。
根本问题是像这样定义数组原型函数:
Array.prototype.myFunction = function(...) {...}
我们要么排除自己的数组函数,要么这样写:
Object.defineProperty(Array.prototype, 'myFunction', {value: function(...) {...})
因此,如果您的应用程序定义了数组原型函数,请使用 Object.defineProperty
或根本不使用它们。这似乎解决了问题。干杯。