|
import re |
|
|
|
|
|
|
|
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 |
|
|