print('first resize: ' + str((x, y)))
if y > maxheight:
    y = maxheight
x = float(maxheight) / float(height) * width
print('second resize: ' + str((x, y)))
xscale = float(x) / svg.props.width
yscale = float(y) / svg.props.height
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, x, y)
context = cairo.Context(surface)
context.scale(xscale, yscale)
svg.render_cairo(context)
surface.write_to_png(ofile)
SVG на стороне сервера в PNG (или другой формат изображения) в python