0x
005815
2026-06-01

Сохранить PDF из API Инструмент Geo-Zone

Как сохранить PDF или скриншот карты из API?


Ответ:

API возвращает 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) и поэтапно предоставляет сообщения о статусе, пока готовый PDF в виде строки в кодировке Base64 не будет включен в последний шаг. Предлагаемое имя файла предоставляется сервером.

Сохранение снимка карты

API может создать фрагмент карты зон нагрузки в виде растрового изображения. Результат соответствует отображению в веб-интерфейсе и подходит для включения в отчеты или собственные приложения. Выводом можно управлять с помощью параметров 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("schneelastzone_muenchen.png", "wb") as f:
    f.write(base64.b64decode(screenshot.screenshot))

print("Сохранено: schneelastzone_muenchen.png")

Параметр zoom управляет уровнем увеличения фрагмента карты. Низкие значения (например, 4) показывают обзор страны, более высокие значения (например, 10) – детальный фрагмент вокруг местоположения. Для JPEG можно дополнительно установить качество изображения с помощью screenshot_quality (1–100).

Что такое Base64?

Base64 преобразует бинарные данные (например, PDF или изображение) в простую текстовую строку, которую можно легко передать через текстовый интерфейс, такой как JSON. Получатель декодирует строку обратно в исходный файл. В Python это делается с помощью стандартной библиотеки в две строки:


import base64
datei_bytes = base64.b64decode(base64_string)

Созданные файлы соответствуют экспорту из веб-интерфейса и могут быть напрямую использованы в вашей проектной документации.



;