1

우리의 응용 프로그램에서는 Autodesk Forge Viewer을 사용하여 3D 및 2D 디자인 파일을 렌더링합니다. 다른 형식의 파일은 꽤 잘 렌더링됩니다. 그러나 pdf 파일의 경우 파일에 실제로 여러 페이지가있는 경우에도 첫 번째 페이지 만 렌더링됩니다. 그러나 우리는 모든 페이지을 표시해야합니다.Autodesk Forge 뷰어는 PDF 파일 용으로 단 하나의 페이지 만 렌더링합니다.

let element = document.getElementById('#the-viewer'); 

fetch2LegToken().then(
    ({accessToken}) => doInitializeTheViewer(urnB64, accessToken, element) 
); 

다른 무엇을 할이가 호출되는 방식이며,

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; 
     }); 
    }); 
} 

그리고 다음은

Viewer loading only the first page

내가 뷰어를 초기화하는 데 사용하고 코드의 일부 뷰어가 다른 3D/2D 파일과 함께 다중 페이지 PDF 파일을 렌더링하게하려면 여기에서해야합니까?

API documentation에서도이 기능을 구성 할 수있는 방법이 없으므로 어떤 샘플에서도 찾을 수 없습니다.

+0

.pdf 파일이나 pdf를 링크했지만 뷰어에서로드하는 데 문제가있는 파일을 렌더링하려합니까? 후자의 경우 어떤 유형의 파일을로드하려고합니까? –

+0

@ShiyaLuo 아니,'pdf' 파일 자체를 뷰어에로드하려고합니다. 오류없이 올바르게로드됩니다. 그러나 문제는 pdf 파일에 여러 페이지가 있어도 첫 번째 페이지 만로드된다는 것입니다. – kabirbaidhya

답변

2

.pdf 파일은 뷰어에서 2D 시트로 변환되므로 .pdf 파일의 각 페이지는 개별 2D보기로 나타나야합니다.

당신은 당신이과 같이 여러 개의보기를 얻을거야 Instantiate a Basic Viewer에서 상용구 코드를 사용하는 경우

: 당신이 onDocumentLoaded을 무시하기 때문에

multiple 2D views

Autodesk360App.jsonDocumentLoaded 방법을 구현 방법을 살펴 보자. 라인 621에서 :

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 방법에있어서, 모든 의견을 얻을 수있는 Autodesk.Viewing.Document.getSubItemsWithProperties 메서드를 호출합니다.

모든보기를로드하는 방법을 시연 할 때 lmvdbg이라는 줄이 있습니다.

+0

의미가 있습니다. 그리고 'Autodesk.Viewing.Document.getSubItemsWithProperties'는 다른 페이지를 반환했습니다. 감사. 나는 우리가'onDocumentLoaded'와'onDocumentFailedToLoad'를 오버라이드 한 이유는 그 이벤트를 처리하고 어플리케이션에서 필요한 액션을 트리거해야하기 때문입니다. 그렇다면이 방법을 재정의하지 않고 이것을 처리하기위한 권장 방법은 무엇입니까? – kabirbaidhya

+0

또한 예제 https://developer.autodesk.com/en/docs/viewer/v2/tutorials/basic-viewer/에 표시된 상용구 코드는 자체적으로 'viewerApp.loadDocumentWithItemAndObject (documentId);'메서드를 사용합니다. 처리해야하는 문서로드 또는 오류 이벤트를 처리하기 위해 콜백을 허용하지 않습니다. – kabirbaidhya

+1

필요한 코드를 복사하여 자신의'onDocumentLoaded' 함수에 붙여 넣으십시오. –

관련 문제