-1

我有一个预先存在的表单(.pdf 和 .doc),我正在尝试使用来自 ArcGIS Online 托管要素图层的属性数据进行填充。我不确定是否可以将 ArcGIS API for Javascript 与 FPDF 一起使用?或者如果有另一种方法可以做这样的事情。

我尝试了以下方法,它工作得很好,但我不想定期下载数据来处理任何传入的新数据。另外,我希望在用户点击时生成此表单带有网络地图应用程序的弹出窗口中的链接(下面的屏幕截图)。

https://justincolegis.com/2017/12/13/using-survey123-or-any-gis-data-to-populated-reports-in-word/

弹窗截图

**更新:基本上我不知道该怎么做,因为将我们的数据移动到托管要素图层,是如何从要素中获取属性并将该信息放入已经存在的 pdf 文档/表单中。

下面是通过查询 Oracle 表使用 FPDF 和数组的 PHP 文件的一部分。这适用于位于 Oracle 表中我们服务器上的旧数据,但不适用于自从将其移动到托管要素图层后进入图层的新数据。

    /Query
    $query = 'SELECT OBJECTID, SITEID, TARGET_SPECIES, DATE_TREATMENT, WATER_BODY,
     AQ_WORKERS, AQ_WEATHER, AQ_WINDSPEED, AQ_TEMP, AQ_WINDDIRECTION, AQ_TOTAL_AI,
     AQ_MIX_USED, AQ_RAIN, AQ_TREATMENT_TYPE, LOCATION, ST_GROUP, COUNTY, AQ_CONTROL_METHOD,
     AQ_APPLICATION_METHOD, AQ_CHEMICALUSED, CH_EPACONCENTRATION,
     AQ_CHEMICALUSED2, CH_EPACONCENTRATION2, MT_COMPANY, NPDES_COC, PDMP,
     AQ_RATEOFAPPLICATION, LATITUDE, LONGITUDE, AQ_MIX_RATE, APPLICATION_AREA, 
     AQ_EFFECTIVENESS FROM WEB_AQTREATMENT WHERE OBJECTID = '.$_GET['id'];

        ob_start();
        $pdf = new FPDI();
        $pdf->addPage('P');
        $pagecount = $pdf->setSourceFile('../../../../../treatment_form.pdf');
        $tplIdx = $pdf->importPage(1);
        $pdf->useTemplate($tplIdx);
        $pdf->SetFont('Helvetica','I',9);
        $pdf->SetTextColor(0,0,0);
        //
        //PERMITTEE INFORMATION
        //
        //PermitNumber (L/R), (U/D)
        $pdf->SetXY(114, 69);
        $pdf->Write(0, $array[20]);
        //Permittee Name (L/R), (U/D)
        $pdf->SetXY(114, 80);
        $pdf->Write(0, $array[19]);
        //Body of Water Treated (L/R), (U/D)
        $pdf->SetXY(114, 92);
        $pdf->Write(0, $array[4]);
        //County
        $pdf->SetXY(176, 92);
        $pdf->Write(0, $array[16]);
        //Date (L/R), (U/D)
        $pdf->SetXY(41.5, 135.5);
        //$pdf->MultiCell(30,5,$array[3],0, 'L');
        $pdf->Write(0,$array[3]);
        //Name of Person Applying Chemical (L/R), (U/D)
        $pdf->SetXY(73, 134);
        $pdf->MultiCell(65,5,$array[5],0,'L');
        //Name of Company (L/R), (U/D)
        $pdf->SetXY(142, 136.5);
        $pdf->Write(0, $array[25]);
4

1 回答 1

0

如果要素服务在表单中包含您需要的每个字段,那么您可以发送您需要的所有字段,而不是只发送 id,或者您甚至可以使用图形toJSON方法对其进行序列化,然后发送所有内容,

function popupContent (feature) {
    // your custom popup content
    ...
    // instead of sending id send all the graphic data
    fetch(url, {
        method: 'POST', // *GET, POST, PUT, DELETE, etc.
        headers: {
          'Content-Type': 'application/json'
        },
        body: feature.graphic.toJSON()
    });
    ...
}
于 2021-05-29T22:07:35.590 回答