首页 文章

ArcGIS API for JavaScript - PrintTask不起作用

提问于
浏览
0

我必须使用ArcGIS API for JavaScript来显示PDF报告,我正在使用该API,因为报告是从我的ArcGIS服务器创建的,这是我的方案 .

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
}

当我运行printReport方法它工作正常,事实上,报告是在服务器中创建的,我知道,因为我正在分析来自ArcGIS服务器的响应:

enter image description here

此时一切正常,但是,当运行sendRequestPrint方法时,响应总是无效 .

发生了什么,为什么报告是否创建它不会出现在响应中?

3 回答

  • 0

    我试过了

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

    它的工作原理

    非常感谢你们 .

  • 0

    请查看 PrintTask complete 函数参数 . 返回的类型是 DataFile .

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

    PrintTask 在内部解析来自服务器的响应并返回不同的对象 . 你应该只是使用如下

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

    此行为是设计使然 . 您应该监听onComplete事件,检查DataFile对象并向返回的URL发出另一个请求以获取您的pdf . 这是您已在代码中执行的操作 .

    有关示例,请参阅PrintTask文档:https://developers.arcgis.com/javascript/3/jsapi/printtask-amd.html

    在您发布的图片中,文档的网址位于<> . value.url .

    所以你的回调应该是这样的:

    function sendRequestPrint(data){        
       var url = data.value.url;
    
       // make a request to get the pdf
       // do other stuff...
    
    }
    

    您可能希望使用Print dijit为您自动执行此过程,而不是直接处理PrintTask:https://developers.arcgis.com/javascript/3/jsapi/print-amd.html

相关问题