应用程序编程接口将 PDF 报告和地图截图作为 Base64 编码的文本返回。这是一种通过基于文本的接口传输二进制文件(如图像或 PDF)的常用方法。随后必须对该文件进行解码并保存。
保存 PDF 报告
以下示例生成一份完整的荷载分区报告 PDF 并将其保存在本地:
import base64
from dlubal.api.geo_zone_tool import GeoZoneTool, Language
gzt = GeoZoneTool(token="")
pdf_result = gzt.get_load_zone_pdf_result(
address="Munich, Germany",
standard="EN 1991-1-3",
annex="DIN EN 1991-1-3",
layer_id=1,
language=Language.EN,
)
if pdf_result:
with open(pdf_result.name, "wb") as f:
f.write(base64.b64decode(pdf_result.pdf))
print(f"已保存: {pdf_result.name}")
带进度显示的 PDF 生成
或者,您可以实时跟踪服务器端 PDF 生成的进度。当您将生成功能集成到带有用户界面的自有应用程序中时,这尤其有用:
for progress in gzt.get_load_zone_pdf(
address="Munich, Germany",
standard="EN 1991-1-3",
annex="DIN EN 1991-1-3",
layer_id=1,
language=Language.EN,
):
print(f"{progress.current_step}/{progress.steps} – {progress.message}")
if progress.pdf_result:
with open(progress.pdf_result.name, "wb") as f:
f.write(base64.b64decode(progress.pdf_result.pdf))
该函数在后台使用 WebSocket 连接 (GraphQL Subscription),并逐步提供状态消息,直到最后一步中包含作为 Base64 编码字符串的完整 PDF。建议的文件名由服务器提供。
保存地图截图
应用程序编程接口可以将荷载分区图的地图区域生成为栅格图形。其结果与网页界面中的显示相对应,适用于集成到报告或自有应用程序中。可以通过参数 zoom、screenshot_type (PNG 或 JPEG) 和 screenshot_quality 来控制输出。
import base64
from dlubal.api import geo_zone_tool
from dlubal.api.geo_zone_tool import GeoZoneTool, Language
gzt = GeoZoneTool(token="")
screenshot = gzt.get_load_zone_screenshot(
address="Munich, Germany",
load_zone_type=geo_zone_tool.LoadZoneType.SNOW,
standard="EN 1991-1-3",
annex="DIN EN 1991-1-3",
layer_id=1,
zoom=6,
language=Language.DE,
screenshot_type=geo_zone_tool.ScreenshotType.PNG,
)
with open("雪荷载分区_慕尼黑.png", "wb") as f:
f.write(base64.b64decode(screenshot.screenshot))
print("已保存: 雪荷载分区_慕尼黑.png")
参数 zoom 控制地图区域的缩放级别。较低的值(例如 4)显示国家概览,较高的值(例如 10)显示位置周围的详细区域。对于 JPEG,还可以通过 screenshot_quality (1–100) 设置图像质量。
什么是 Base64?
Base64 将二进制数据(如 PDF 或图像)转换为纯文本字符串,该字符串可以通过基于文本的接口(如 JSON)轻松传输。接收方将该字符串解码回原始文件。在 Python 中,标准库用两行代码即可完成此操作:
import base64
datei_bytes = base64.b64decode(base64_string)
生成的文件与网页界面的导出文件相对应,可以直接用于您的项目文档。