後端列印


前端藉由外掛呼叫 MapServer 列印功能,列印功能只支援2D

準備列印格式

在開始以前要先準備好列印排版的檔案(Map.LLF),開啟 MapServer 安裝資料夾下的 LayoutDesignerAP.exe (64位元為LayoutDesignerAP_64.exe)

步驟 1. 於 File → New... ,再點選 Edit → New... 建立新的列印格式。

NewBackendPrint

步驟 2. 設定範本名稱,取名叫 MyPattern(程式碼中會用到),完成後點選 ok。

[info] 小提示:
其餘列印設定請依個人需求選擇。

NewBackendPrint

步驟 3. 選擇 Insert → Map,設定要放地圖的空間。

NewBackendPrint

步驟 4. 對地圖(黃色區域)按下右鍵並選擇 Property,將 Id 設成 MyMap(程式碼中會用到)。

NewBackendPrint

步驟 5. 選擇 Insert → Text,設定標題的位置,並對文字列按下右鍵選擇 Property,Id 設定為 MyTitle(程式碼中會用到)。

NewBackendPrint

步驟 6. 將檔案儲存到地圖伺服器的設定資料夾(C:\ProgramData\PilotGaea\PGMaps\[MapServer_Name])下並取代原有的 Map.LLF 檔案,需要注意是不是正在運行中的 Map Server 的設定資料夾,如設定錯誤 Print 會回傳false。

NewBackendPrint

建立列印用DoCommand外掛

參照上一章的 DoCommand 範例,建立一個 DoCommand 外掛呼叫 CGeoDatabase::Print。

private bool Print(CGeoDatabase DB, string SessionID, VarStruct InputParm, out VarStruct RetParm) {
    RetParm = new VarStruct();
    RetParm["success"].Set(DB.Print(InputParm));

    return true;
}

由前端進行呼叫

在這裡我們以 web 版本的 client 進行呼叫,將使用第二章最後的範例程式碼繼續新增內容。 程式碼

步驟 1. 新增一個按鈕 Print。

<div id="MyControl" style="position: absolute;z-index: 1;">
    <button id="print">Print</button> 
</div>

步驟 2. 新增按鈕事件。

document.getElementById('print').onclick = function() {
    var docommandUrl = "http://127.0.0.1:8080/docmd?cmd=Print";
    var inputParam = PrintInfo();
    var layerInfo = mapDoc.DoCommand(docommandUrl, inputParam, console.log, false, 0)
};

步驟 3. 再補上 PrintInfo 函式。

function PrintInfo() {
    var myMap = {}
    myMap["EPSG"] = 3857;
    myMap["LayerName"] = "範例影像圖層";
    myMap["Viewport"] = mapView.Viewport.ToGeoJSON();

    var myTitle = {}
    myTitle["Text"] = "Taiwan";

    var printInfo = {}
    printInfo["DocName"] = "DocName";
    printInfo["LayoutName"] = "MyPattern";
    printInfo["MyMap"] = myMap;
    printInfo["MyTitle"] = myTitle;

    var parm = {}
    parm["PrintInfo"] = printInfo
    parm["ArrayLayerData"] = JSON.parse(mapDoc.GetLayerInfoJson("範例影像圖層"));

    return parm;
}

完成後點擊前端圖台新增的 Print 按鈕即可跳出儲存為 PDF 的存檔視窗。

Copyright © PilotGaea 2022 Version:13.0 all right reserved,powered by Gitbook修訂時間: 2024-01-31 10:01:42