0x
005815
01-06-2026

Guardar PDF de la API de herramienta de geozonas

¿Cómo guardo el PDF o la captura de pantalla del mapa desde la API?


Respuesta:

La API devuelve informes PDF y capturas de pantalla de mapas como texto codificado en Base64. Este es un procedimiento común para transmitir archivos binarios (como imágenes o PDFs) a través de una interfaz basada en texto. El archivo debe decodificarse y guardarse posteriormente.

Guardar informe PDF

El siguiente ejemplo genera un informe completo de zonas de carga como PDF y lo guarda localmente:


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

Generación de PDF con indicador de progreso

Alternativamente, puede seguir el progreso de la generación del PDF en el servidor en tiempo real. Esto es especialmente útil si integra la generación en su propia aplicación con interfaz de usuario:


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

La función utiliza en segundo plano una conexión WebSocket (suscripción GraphQL) y proporciona mensajes de estado paso a paso, hasta que el PDF finalizado se incluye como cadena codificada en Base64 en el último paso. El nombre de archivo sugerido lo suministra el servidor.

Guardar captura de pantalla del mapa

La API puede generar un recorte del mapa de zonas de carga como gráfico rasterizado. El resultado corresponde a la representación en la interfaz web y es adecuado para integrar en informes o aplicaciones propias. La salida se puede controlar mediante los parámetros zoom, screenshot_type (PNG o JPEG) y 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("Gespeichert: schneelastzone_muenchen.png")

El parámetro zoom controla el nivel de ampliación del recorte del mapa. Los valores bajos (p. ej., 4) muestran una vista general del país, los valores más altos (p. ej., 10) un recorte detallado alrededor de la ubicación. En JPEG se puede especificar adicionalmente la calidad de imagen a través de screenshot_quality (1–100).

¿Qué es Base64?

Base64 convierte datos binarios (como un PDF o una imagen) en una cadena de texto pura que se puede transmitir sin problemas a través de una interfaz basada en texto como JSON. El receptor decodifica la cadena de nuevo al archivo original. En Python, esto se realiza con la biblioteca estándar en dos líneas:


import base64
datei_bytes = base64.b64decode(base64_string)

Los archivos generados corresponden a los exportar de la interfaz web y se pueden incorporar directamente a la documentación de su proyecto.



;