Spaces:
Running
Running
import re | |
# check: https://github.com/vasturiano/d3-zoomable/blob/master/example/svg/index.html | |
def remove_links_svg(svg): | |
svg = svg.replace("</a>","") | |
svg = svg.replace("\n\n","\n") | |
regex = r"<a xlink[^>]*>" | |
svg = re.sub(regex, "", svg, count=0, flags=re.MULTILINE) | |
return svg | |
def resize_svg(svg, max_width=800): | |
regex = r"<svg width=\"(?P<width>[\d]+)pt\" height=\"(?P<height>[\d]+)pt\"" | |
match = next(re.finditer(regex, svg, re.MULTILINE)) | |
width = int(match.group("width")) | |
height = int(match.group("height")) | |
if width <= max_width: | |
return svg | |
scale = max_width / width | |
s_width = round(scale * width) | |
s_height = round(scale * height) | |
s_svg = svg.replace(match.group(), f'<svg width="{s_width}pt" height="{s_height}pt"') | |
return s_svg | |
def postprocess_svg(svg): | |
if not svg: | |
return "" | |
svg = "<svg" + svg.split("<svg", maxsplit=1)[1] | |
svg = remove_links_svg(svg) | |
svg = resize_svg(svg, max_width=800) | |
return svg | |