import io import cairosvg from PyPDF2 import PdfFileWriter, PdfFileReader import xml.etree.ElementTree as ET from xml2svg import XML2SVG import svgwrite svg_path = 'image.svg' png_path = 'image.png' pdf_path = 'image.pdf' pdf_writer = PdfFileWriter() _unit = svgwrite.Unit('mm') svg_page = svgwrite.Drawing(size=(_unit(50), _unit(50))) tree = ET.parse(svg_path) et_tag = ET.fromstring(tree) svg_tag = XML2SVG(et_tag) svg_page.add(svg_tag) pdf_writer.addPage(PdfFileReader(io.BytesIO(cairosvg.svg2pdf(bytestring=svg_page.tostring()))).getPage(0)) with open('./' + pdf_path, 'x+b') as out: pdf_writer.write(out)