0x
005815
1. Juni 2026

PDF aus der Geo-Zonen-Tool API speichern

Wie speichere ich das PDF oder den Karten-Screenshot aus der API?


Antwort:

Die API liefert PDF-Berichte und Karten-Screenshots als Base64-kodierten Text zurück. Das ist ein gängiges Verfahren, um Binärdateien (wie Bilder oder PDFs) über eine textbasierte Schnittstelle zu übertragen. Die Datei muss anschließend dekodiert und gespeichert werden.

PDF-Bericht speichern

Das folgende Beispiel erzeugt einen vollständigen Lastzonenbericht als PDF und speichert ihn lokal:

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"Gespeichert: {pdf_result.name}")

PDF-Erzeugung mit Fortschrittsanzeige

Alternativ können Sie den Fortschritt der serverseitigen PDF-Erzeugung in Echtzeit verfolgen. Das ist besonders nützlich, wenn Sie die Erzeugung in eine eigene Anwendung mit Benutzeroberfläche einbinden:

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))

Die Funktion nutzt im Hintergrund eine WebSocket-Verbindung (GraphQL Subscription) und liefert schrittweise Statusmeldungen, bis das fertige PDF als Base64-kodierter String im letzten Schritt enthalten ist. Der vorgeschlagene Dateiname wird vom Server mitgeliefert.

Karten-Screenshot speichern

Die API kann einen Kartenausschnitt der Lastzonenkarte als Rastergrafik erzeugen. Das Ergebnis entspricht der Darstellung in der Web-Oberfläche und eignet sich zur Einbindung in Berichte oder eigene Anwendungen. Über die Parameter zoom, screenshot_type (PNG oder JPEG) und screenshot_quality lässt sich die Ausgabe steuern.

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("Gespeichert: schneelastzone_muenchen.png")

Der Parameter zoom steuert die Vergrößerungsstufe des Kartenausschnitts. Niedrige Werte (z. B. 4) zeigen eine Landesübersicht, höhere Werte (z. B. 10) einen detaillierten Ausschnitt um den Standort. Bei JPEG kann zusätzlich die Bildqualität über screenshot_quality (1–100) festgelegt werden.

Was ist Base64?

Base64 wandelt Binärdaten (wie ein PDF oder ein Bild) in einen reinen Textstring um, der sich problemlos über eine textbasierte Schnittstelle wie JSON übertragen lässt. Der Empfänger dekodiert den String wieder zurück in die Originaldatei. In Python erledigt das die Standardbibliothek mit zwei Zeilen:

import base64
datei_bytes = base64.b64decode(base64_string)

Die erzeugten Dateien entsprechen den Exporten der Web-Oberfläche und können direkt in Ihre Projektdokumentation übernommen werden.



;