代码之家  ›  专栏  ›  技术社区  ›  Octavio Cárdenas

用于JavaScript的ArcGIS API-PrintTask不工作

  •  0
  • Octavio Cárdenas  · 技术社区  · 9 年前

    我必须使用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 回复  |  直到 9 年前
        1
  •  0
  •   T Kambi    9 年前

    PrintTask complete 函数参数。返回的类型是 DataFile .

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

    这个 打印任务 内部解析来自服务器的响应并返回不同的对象。您应该简单地使用下面的方法

    function sendRequestPrint(data){        
        console.log(data.url);
    }
    
        2
  •  0
  •   rpepato    9 年前

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

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

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

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

        3
  •  0
  •   Octavio Cárdenas    9 年前

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

    它工作了吗

    谢谢大家。