2016-10-04 1 views
0

Je dois utiliser l'API ArcGIS pour JavaScript pour afficher un rapport PDF. J'utilise cette API car le rapport est créé à partir de mon serveur ArcGIS, c'est mon scénario.API ArcGIS pour JavaScript - PrintTask ne fonctionne pas

code JS:

function printReport(){ 
    var printTask = new PrintTask({ 
     url: ptReport, 
     mode: "async" 
    }) 
    var template = new PrintTemplate({ 
     format: "pdf", 
     exportOptions: { 
     dpi: 96 
    }, 
    outputSize:[800, 1100], 
    layout: "", 
    layoutOptions: { 
     titleText: "", 
     authorText: "" 
     } 
    }); 
    var params = new PrintParameters({ 
     view: view, 
     template: template, 
     extraParameters: { 
     "pPerdidaCablesConectores" : "1 dB", 
     "pOtrasPerdidas" : "0 dB"   
     } 
    });  
    printTask.execute(params).then(sendRequestPrint, showError); 
} 
function sendRequestPrint(data){   
    console.log(data.value); //it always is void 
} 

Quand je lance la méthode PrintReport il fonctionne très bien, en fait, le rapport est créé sur le serveur, je le sais parce que je suis l'analyse des réponses qui viennent de l'ArcGIS serveur:

enter image description here

cependant, tout va bien de travail à ce stade, lorsque la méthode sendRequestPrint est runned, la réponse vient toujours vide.

Qu'est-ce qui se passe, pourquoi le rapport est créé il ne vient pas dans la réponse?

Répondre

0

Veuillez consulter les paramètres de fonction PrintTaskcomplete. le type renvoyé est DataFile.

https://developers.arcgis.com/javascript/3/jsapi/datafile-amd.html

Le PrintTask parse interne la réponse du serveur et retourne un objet différent. Vous devez simplement utiliser comme ci-dessous

function sendRequestPrint(data){   
    console.log(data.url); 
} 
0

Ce problème est inhérent à conception. Vous devriez écouter l'événement onComplete, inspecter l'objet DataFile et faire une autre requête à l'url retournée pour obtenir votre pdf. C'est quelque chose que vous faites déjà dans votre code.

Voir la documentation PrintTask des exemples: https://developers.arcgis.com/javascript/3/jsapi/printtask-amd.html

Dans l'image que vous avez publié l'URL de votre document est à <> .value.url.

Donc, votre rappel devrait être quelque chose comme:

function sendRequestPrint(data){   
    var url = data.value.url; 

    // make a request to get the pdf 
    // do other stuff... 

} 

Vous pouvez utiliser le dijit d'impression pour automatiser ce processus pour vous et ne pas traiter la PrintTask directement: https://developers.arcgis.com/javascript/3/jsapi/print-amd.html

0

J'ai essayé

function sendRequestPrint(data){   
    console.log(data.url); 
} 

et travailler

Than ks beaucoup les gars.

+0

Veuillez marquer la bonne réponse plutôt que d'en poster une vous-même. Merci –