Autodesk Forge查看器仅显示多页PDF第一页的问题咨询
Autodesk Forge查看器仅显示多页PDF第一页的问题咨询
嘿,我来帮你排查这个问题~你遇到的仅能看到PDF第一页的情况,大概率是因为Viewer默认没显示页面切换的导航控件,或者初始化时的设置没适配2D PDF文档,下面给你具体的解决办法:
1. 切换到2D专用查看器(更适配PDF)
你当前用的是Autodesk.Viewing.GuiViewer3D,它主要针对3D模型优化。对于PDF这类2D文档,换成Autodesk.Viewing.Viewer2D会更适配,它默认就会显示页面导航控件。修改代码里的初始化部分:
// 把原来的GuiViewer3D替换成Viewer2D viewer = new Autodesk.Viewing.Viewer2D(htmlDiv);
2. 确保加载完整的PDF文档节点
在你的onDocumentLoadSuccess函数里,当前加载的是getDefaultGeometry(),有时候对于多页PDF,我们可以主动获取所有可加载的页面节点,确保完整加载文档:
function onDocumentLoadSuccess(viewerDocument) { // 获取PDF所有页面的几何节点 var allViews = viewerDocument.getRoot().search({'type':'geometry'}); if(allViews.length > 0){ // 加载第一个页面,之后就能通过导航切换其他页面 viewer.loadDocumentNode(viewerDocument, allViews[0]); } }
3. (可选)如果坚持用3D查看器,手动启用2D导航控件
如果你因为其他需求必须使用GuiViewer3D,可以手动启用页面切换的UI控件,在Viewer初始化成功后加载对应扩展并切换2D模式:
// 在viewer.start()成功后添加这段代码 viewer.loadExtension('Autodesk.BasicNavigation').then(function(navExt) { // 启用2D导航模式,显示页面切换按钮 navExt.setNavigationMode('2d'); });
完整修改后的代码示例
这里给你整合好的可运行代码参考,替换掉<Access_Token>和<DOC_URN>即可:
<head> <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=no" /> <meta charset="utf-8"> <link rel="stylesheet" href="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/style.min.css" type="text/css"> <script src="https://developer.api.autodesk.com/modelderivative/v2/viewers/7.*/viewer3D.min.js"> </script> <style> body { margin: 0; } #forgeViewer { width: 100%; height: 100%; margin: 0; background-color: #F0F8FF; } </style> </head> <body> <div id="forgeViewer"></div> </body> <script> var viewer; var options = { env: 'AutodeskProduction2', api: 'streamingV2_EU', accessToken: '<Access_Token>' }; Autodesk.Viewing.Initializer(options, function () { var htmlDiv = document.getElementById('forgeViewer'); // 换成2D专用查看器适配PDF viewer = new Autodesk.Viewing.Viewer2D(htmlDiv); var startedCode = viewer.start(); if (startedCode > 0) { console.error('Failed to create a Viewer: WebGL not supported.'); return; } console.log('Initialization complete, loading a model next...'); var documentId = 'urn:<DOC_URN>'; Autodesk.Viewing.Document.load(documentId, onDocumentLoadSuccess, onDocumentLoadFailure); }); function onDocumentLoadSuccess(viewerDocument) { // 获取所有PDF页面节点 var allViews = viewerDocument.getRoot().search({'type':'geometry'}); if(allViews.length > 0){ viewer.loadDocumentNode(viewerDocument, allViews[0]); // 加载成功后,顶部导航栏会自动出现页面切换控件 } } function onDocumentLoadFailure() { console.error('Failed fetching Forge manifest'); } </script>
修改完成后,你就能在Viewer的顶部导航栏看到页面切换的按钮(上一页/下一页、页码选择器),顺利浏览多页PDF的所有内容啦。
内容来源于stack exchange
相关产品推荐
相关产品推荐

