在我们的应用程序中,我们使用Autodesk Forge Viewer来渲染3D和2D设计文件。具有其他格式的文件可以很好地呈现。但是对于pdf
文件,即使文件实际上有多个页面,也只会呈现第一页。
但我们需要显示所有页面。
以下是我用来初始化查看器的代码部分:
function doInitializeTheViewer(urn, token, element) {
const options = {
'env': 'AutodeskProduction',
'accessToken': token
};
let documentId = 'urn:' + urn;
return new Promise((resolve, reject) => {
Autodesk.Viewing.Initializer(options, function onInitialized() {
let viewerApp = new Autodesk.A360ViewingApplication(element.id);
viewerApp.onDocumentLoaded = function (doc) {
resolve(getViewerInstance().then(viewer => {
state.viewer = viewer;
return state;
}));
};
viewerApp.onDocumentFailedToLoad = (reason, errorCode) => {
reject({errorCode, reason});
};
viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Private.GuiViewer3D);
viewerApp.loadDocumentWithItemAndObject(documentId);
state.viewerApp = viewerApp;
});
});
}
而且,这就是它被调用的方式:
let element = document.getElementById('#the-viewer');
fetch2LegToken().then(
({accessToken}) => doInitializeTheViewer(urnB64, accessToken, element)
);
我还需要做些什么来让观众同时渲染多页pdf文件以及其他3D / 2D文件?
我找不到任何方法在API documentation中配置它,也无法在任何样本中找到它。
答案 0 :(得分:2)
var item_width = $('.item-slider').width();
var item_margin = (item_width-600)/5; //sum of 4 elements divided by 5 margin spaces
var items = $('ul.item-slider>li');
var x = 0;
$.each(items,function(index){
$(this).data("id",x);
x = x+1;
});
function needToCall(){
$.each(items,function(index){
var pos = $(this).data('id');
if($(this).data('id') < 1){
var left =(pos-1) * 150 + (pos-1) * 10;
-Math.abs(left);
$(this).css("left",left);
}
else if($(this).data('id') === 1){
$(this).css("left", 0);
console.log("positon is set to" + $(this).css("left"));
}
else if($(this).data('id') > 1){
var left = (pos-1) * 150 + (pos-1) * 10;
$(this).css("left", left);
console.log("positon is set to " + $(this).css("left"));
}
});
}
$(".explore_matches > button[name = 'pre']").click(function(){
$.each(items,function(index){
console.log("each working");
$(this).data('id',"abc");
})
needToCall();
console.log("skipped");
});
个文件在查看器中翻译为2D工作表,.pdf
文件中的每个页面都应显示为单独的2D视图。
如果您只是使用Instantiate a Basic Viewer中的样板代码,那么您将获得多个视图:
由于您覆盖.pdf
,请查看Autodesk360App.js实施onDocumentLoaded
方法的方式。在第621行:
onDocumentLoaded
在function showDesignExplorer( modelDocument )
{
var viewableItems = Autodesk.Viewing.Document.getSubItemsWithProperties(modelDocument.getRootItem(), {'type':'folder','role':'viewable'}, true);
var root = viewableItems[0];
var geometryItems = Autodesk.Viewing.Document.getSubItemsWithProperties(root, {'type':'geometry'}, true);
if (geometryItems.length === 0)
return false;
if (geometryItems.length === 1) {
// Check if the item has camera views.
return modelDocument.getNumViews( geometryItems[0] ) > 1;
}
return true;
}
方法中,调用onDocumentLoaded
方法获取所有观看次数。
在lmvdbg处还有一行说明了如何加载所有视图。