唯杰地图 logo唯杰地图
VJMAP
EN

04_export_pdf_and_dxf.py

vjmap-service/examples/python/04_export_pdf_and_dxf.py 1.6 KB48 行
原文
"""示例 4:导出 PDF / DXF。

用法:
    python 04_export_pdf_and_dxf.py [mapid] [version]

说明:
    - exportPdf 返回 ``{path, status}``,``path`` 相对于 API base;纸张用
      ``pageWidth``/``pageHeight``(mm)等 ODA 选项。
    - exportDxf 对某些图可能返回 ``{status:false, error:"Invalid Symbol Table name"}``,
      可用 ``cadVersion="2018"`` 指定目标版本(2000/2004/2007/2010/2013/2018/*)。
"""
from __future__ import annotations

import sys
import urllib.parse

from _common import make_client, sample_mapid, sample_version
import vjmap  # noqa: E402  _common 已把 SDK 目录加入 sys.path


def main() -> None:
    svc = make_client()
    mapid = sys.argv[1] if len(sys.argv) > 1 else sample_mapid()
    version = sys.argv[2] if len(sys.argv) > 2 else sample_version()

    print(f"[1/2] 导出 PDF (mapid={mapid}/{version})")
    pdf_res = svc.cmd_export_pdf(
        mapid=mapid, version=version,
        pageWidth=297, pageHeight=210,
    )
    print("  PDF 导出返回:", pdf_res)
    path = pdf_res.get("path")
    if path:
        base = svc.base_gateway().rstrip("/")
        full_url = f"{base}/{path.lstrip('/')}?token={urllib.parse.quote(svc.token)}"
        print("  完整下载链接(可直接浏览器打开):\n   ", full_url)

    print(f"\n[2/2] 导出 DXF")
    try:
        dxf_res = svc.cmd_export_dxf(mapid=mapid, version=version, cadVersion="2018")
        print("  DXF 导出返回:", dxf_res)
    except vjmap.VjmapError as e:
        print("  DXF 导出失败(业务错误):", e.body)


if __name__ == "__main__":
    main()