API vrací PDF zprávy a snímky mapy jako text kódovaný v Base64. Jedná se o běžný postup pro přenos binárních souborů (jako jsou obrázky nebo PDF) přes textové rozhraní. Soubor je následně nutné dekódovat a uložit.
Uložení PDF zprávy
Následující příklad vygeneruje kompletní zprávu o zatěžovacích zónách jako PDF a uloží ji lokálně:
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"Uloženo: {pdf_result.name}")
Generování PDF s ukazatelem průběhu
Alternativně můžete v reálném čase sledovat průběh generování PDF na straně serveru. To je užitečné zejména při integraci generování do vlastní aplikace s uživatelským rozhraním:
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))
Funkce na pozadí využívá WebSocketové připojení (GraphQL Subscription) a postupně vrací stavové zprávy, dokud není v posledním kroku obsaženo hotové PDF jako řetězec kódovaný v Base64. Navrhovaný název souboru je dodán serverem.
Uložení snímku mapy
API dokáže vygenerovat výřez mapy zatěžovacích zón jako rastrovou grafiku. Výsledek odpovídá zobrazení ve webovém rozhraní a je vhodný pro začlenění do zpráv nebo vlastních aplikací. Výstup lze ovládat pomocí parametrů zoom, screenshot_type (PNG nebo JPEG) a 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("Uloženo: schneelastzone_muenchen.png")
Parametr zoom ovládá úroveň zvětšení výřezu mapy. Nízké hodnoty (např. 4) zobrazují přehled země, vyšší hodnoty (např. 10) detailní výřez kolem lokality. U formátu JPEG lze navíc nastavit kvalitu obrázku pomocí screenshot_quality (1–100).
Co je Base64?
Base64 převádí binární data (jako PDF nebo obrázek) na čistě textový řetězec, který lze bez problémů přenášet přes textové rozhraní, jako je JSON. Příjemce dekóduje řetězec zpět do původního souboru. V Pythonu to zvládne standardní knihovna se dvěma řádky:
import base64
datei_bytes = base64.b64decode(base64_string)
Vygenerované soubory odpovídají exportům z webového rozhraní a lze je přímo převzít do vaší projektové dokumentace.