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.