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'関数にコピー&ペーストしてください。 –

関連する問題