0x
005815
2026-06-01

Zapisz plik PDF z API narzędzia Geo-Zone

Jak zapisać plik PDF lub zrzut ekranu mapy z poziomu API?


Odpowiedź:

API zwraca raporty PDF i zrzuty ekranu mapy jako tekst zakodowany w Base64. Jest to powszechna metoda przesyłania plików binarnych (takich jak obrazy lub pliki PDF) przez interfejs tekstowy. Plik musi następnie zostać zdekodowany i zapisany.

Zapisywanie raportu PDF

Poniższy przykład generuje kompletny raport stref obciążenia jako PDF i zapisuje go lokalnie:


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

Generowanie PDF ze wskaźnikiem postępu

Alternatywnie można śledzić postęp generowania PDF po stronie serwera w czasie rzeczywistym. Jest to szczególnie przydatne, gdy integrujesz generowanie z własną aplikacją z interfejsem użytkownika:


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

Funkcja wykorzystuje w tle połączenie WebSocket (subskrypcja GraphQL) i dostarcza stopniowe komunikaty o stanie, aż gotowy plik PDF zostanie zawarty jako ciąg znaków zakodowany w Base64 w ostatnim kroku. Proponowana nazwa pliku jest dostarczana przez serwer.

Zapisywanie zrzutu ekranu mapy

API może wygenerować wycinek mapy stref obciążenia jako grafikę rastrową. Wynik odpowiada widokowi w interfejsie internetowym i nadaje się do integracji z raportami lub własnymi aplikacjami. Za pomocą parametrów zoom, screenshot_type (PNG lub JPEG) i screenshot_quality można sterować wynikiem.


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

Parametr zoom steruje poziomem powiększenia wycinka mapy. Niskie wartości (np. 4) pokazują przegląd krajowy, wyższe wartości (np. 10) szczegółowy wycinek wokół lokalizacji. W przypadku JPEG można dodatkowo określić jakość obrazu za pomocą screenshot_quality (1–100).

Co to jest Base64?

Base64 przekształca dane binarne (takie jak PDF lub obraz) w czysty ciąg tekstowy, który można bez problemu przesyłać przez interfejs tekstowy, taki jak JSON. Odbiorca dekoduje ciąg z powrotem do oryginalnego pliku. W Pythonie robi to biblioteka standardowa za pomocą dwóch linii:


import base64
datei_bytes = base64.b64decode(base64_string)

Wygenerowane pliki odpowiadają eksportom z interfejsu internetowego i mogą być bezpośrednio wykorzystane w dokumentacji projektu.



;