"""示例 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()