svg2pdf.py 623 B

1234567891011121314151617181920212223242526272829
  1. import io
  2. import cairosvg
  3. from PyPDF2 import PdfFileWriter, PdfFileReader
  4. import xml.etree.ElementTree as ET
  5. from xml2svg import XML2SVG
  6. import svgwrite
  7. svg_path = 'image.svg'
  8. png_path = 'image.png'
  9. pdf_path = 'image.pdf'
  10. pdf_writer = PdfFileWriter()
  11. _unit = svgwrite.Unit('mm')
  12. svg_page = svgwrite.Drawing(size=(_unit(50), _unit(50)))
  13. tree = ET.parse(svg_path)
  14. et_tag = ET.fromstring(tree)
  15. svg_tag = XML2SVG(et_tag)
  16. svg_page.add(svg_tag)
  17. pdf_writer.addPage(PdfFileReader(io.BytesIO(cairosvg.svg2pdf(bytestring=svg_page.tostring()))).getPage(0))
  18. with open('./' + pdf_path, 'x+b') as out:
  19. pdf_writer.write(out)