#!/usr/bin/env python3 # coding=utf-8 from svgutils.transform import fromfile from svgutils.templates import VerticalLayout, ColumnLayout layout = ColumnLayout(5) for i in range(12): svg = fromfile("files/example.svg") layout.add_figure(svg) layout.save("stack_svg.svg")
def chicpeaDownload(request, url): queryDict = request.POST output_format = queryDict.get("output_format") CSS = queryDict.get("css-styles") WIDTH = int(queryDict.get("svg-width")) + 40 + 50 HEIGHT = int(queryDict.get("svg-height")) + 100 tissue = queryDict.get("tissue").replace(' ', '_') returnFileName = 'CHiCP-' + queryDict.get("searchTerm") + '-' + tissue + '.' + output_format fig1 = fromstring(queryDict.get("data-main")) layout = ColumnLayout(1) layout.add_figure(fig1) if queryDict.get("data-bait") and queryDict.get("data-target"): s1 = queryDict.get("data-bait") s2 = queryDict.get("data-target") layoutPanels = VerticalLayout() layoutPanels.add_figure(fromstring(s1)) layoutPanels.add_figure(fromstring(s2)) layoutPanels._generate_layout() svgPanels = layoutPanels.to_str() fig2 = fromstring(svgPanels) else: fig2 = fromstring("<svg></svg>") layout.add_figure(fig2) layout._generate_layout() SVG = layout.to_str().decode() p = re.compile(r'translate\((\d+), 0\)') m = p.search(SVG) SVG = re.sub(r'translate\(\d+, 0\)', r'translate('+str(int(m.group(1)) + 60)+', 50)', SVG) SVG = SVG.replace('translate(0, 270)', 'translate(0, 390)') SVG = SVG.replace('<g>', '<g transform="translate(20,50) scale(1)">', 1) SVG = SVG.replace('<svg ', '<svg style="width:'+str(WIDTH)+'px;height:'+str(HEIGHT)+'px;" ') SVG = SVG.replace("</svg>", '<defs><style type="text/css">'+CSS+'</style></defs></svg>') if output_format == "svg": response = HttpResponse(content_type='image/svg+xml') response['Content-Disposition'] = 'attachment; filename="' + returnFileName + '"' response.write(SVG) elif output_format == "pdf" or output_format == "png": mime_type = "application/x-pdf" if output_format == "pdf" else "image/png" response = HttpResponse(content_type=mime_type) response['Content-Disposition'] = 'attachment; filename="' + returnFileName + '"' iFile = NamedTemporaryFile(delete=False) oFile = NamedTemporaryFile(delete=False) iFile.write(SVG.encode()) iFile.close() if output_format == "pdf": svg2pdf(SVG.encode('utf-8'), write_to=str(oFile.name)) else: svg2png(SVG.encode('utf-8'), write_to=str(oFile.name)) fileData = oFile.read() response.write(fileData) else: retJSON = {"error": "output format was not recognised"} response = JsonResponse(retJSON) return response
#!/usr/bin/env python # coding=utf-8 from svgutils.transform import fromfile from svgutils.templates import VerticalLayout, ColumnLayout layout = ColumnLayout(5) for i in range(12): svg = fromfile("../tests/circle.svg") layout.add_figure(svg) layout.save("stack_svg.svg")
def chicpeaDownload(request, url): queryDict = request.POST output_format = queryDict.get("output_format") CSS = queryDict.get("css-styles") WIDTH = int(queryDict.get("svg-width")) + 40 + 50 HEIGHT = int(queryDict.get("svg-height")) + 60 tissue = queryDict.get("tissue").replace(' ', '_') returnFileName = 'CHiCP-' + queryDict.get("searchTerm") + '-' + tissue + '.' + output_format fig1 = fromstring(queryDict.get("data-main")) layout = ColumnLayout(1) layout.add_figure(fig1) if queryDict.get("data-bait") and queryDict.get("data-target"): s1 = queryDict.get("data-bait") s2 = queryDict.get("data-target") layoutPanels = VerticalLayout() layoutPanels.add_figure(fromstring(s1)) layoutPanels.add_figure(fromstring(s2)) layoutPanels._generate_layout() svgPanels = layoutPanels.to_str() fig2 = fromstring(svgPanels) else: fig2 = fromstring("<svg></svg>") layout.add_figure(fig2) layout._generate_layout() SVG = layout.to_str().decode() p = re.compile(r'translate\((\d+), 0\)') m = p.search(SVG) SVG = re.sub(r'translate\(\d+, 0\)', r'translate('+str(int(m.group(1)) + 60)+', 50)', SVG) SVG = SVG.replace('translate(0, 270)', 'translate(0, 390)') SVG = SVG.replace('<g>', '<g transform="translate(20,30) scale(1)">', 1) SVG = SVG.replace('<svg ', '<svg style="width:'+str(WIDTH)+'px;height:'+str(HEIGHT)+'px;" ') SVG = SVG.replace("</svg>", '<defs><style type="text/css">'+CSS+'</style></defs></svg>') if output_format == "svg": response = HttpResponse(content_type='image/svg+xml') response['Content-Disposition'] = 'attachment; filename="' + returnFileName + '"' response.write(SVG) elif output_format == "pdf" or output_format == "png": mime_type = "application/x-pdf" if output_format == "pdf" else "image/png" response = HttpResponse(content_type=mime_type) response['Content-Disposition'] = 'attachment; filename="' + returnFileName + '"' iFile = NamedTemporaryFile(delete=False) oFile = NamedTemporaryFile(delete=False) iFile.write(SVG.encode()) iFile.close() if output_format == "pdf": svg2pdf(SVG.encode('utf-8'), write_to=str(oFile.name)) else: svg2png(SVG.encode('utf-8'), write_to=str(oFile.name)) fileData = oFile.read() response.write(fileData) else: retJSON = {"error": "output format was not recognised"} response = JsonResponse(retJSON) return response