docs: def get_print_bbox(x, y, zoom, width, height, dpi):
      """
      Calculate the tile bounding box based on position, map size and resolution.
  
      The function returns the next larger tile-box, that covers the specified
      page size in mm.
  
      Args:
          x (float): map center x-coordinate in Mercator projection (EPSG:4326)
          y (float): map center y-coordinate in Mercator projection (EPSG:4326)
          zoom (int): tile zoom level to use for printing
          width (float): page width in mm
          height (float): page height in mm
          dpi (int): resolution in dots per inch
  
      Returns:
          GridBB: Bounding box of the map in TileCoordinates.
  
      >>> str(get_print_bbox(4164462.1505763642, 985738.7965919945, 14, 297, 150, 120))
      '<tile min: <zoom: 14, x: 9891, y: 7786>, max: <zoom: 14, x: 9897, y: 7790>>'
      """
      tiles_h = width * dpi_to_dpmm(dpi) / TILE_SIZE
      tiles_v = height * dpi_to_dpmm(dpi) / TILE_SIZE
      mercator_coords = MercatorCoordinate(x, y)
      tile_coords = mercator_coords.to_tile(zoom)
      tile_bb = GridBB(zoom,
                       min_x=tile_coords.x - math.ceil(tiles_h / 2),
                       max_x=tile_coords.x + math.ceil(tiles_h / 2),
                       min_y=tile_coords.y - math.ceil(tiles_v / 2),
                       max_y=tile_coords.y + math.ceil(tiles_v / 2))
      return tile_bb