在 python 中将 SVG 转换为 PDF

在 python 中将 SVG 转换为 PDF

svglib我正在尝试使用和包在 python 中将 SVG 文件转换为 PDF reportlab。这是 SVG 文件。

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="blue" />
</svg>

这是我用来转换的代码(从svglib网页获取)。

>>> from svglib.svglib import svg2rlg
>>> from reportlab.graphics import renderPDF
>>> drawing = svg2rlg("file.svg")
>>> renderPDF.drawToFile(drawing, "file.pdf")

代码运行良好,没有任何错误或异常,但file.pdf由此生成的是一个空白文件。我的意思是,当我打开这个 PDF 文件时,我什么也看不到,只看到白色背景页面,上面什么也没有。

我哪里出错了?

答案1

如果你做了最后一行:

renderPDF.drawToFile(drawing, "file.pdf", autoSize=0)

你会在页面上看到一个漂亮的蓝色圆圈。的正常参数值 autoSize1导致 PDF 与绘图的尺寸相同。

问题在于您的 svg 文件没有大小参数。例如,您可以将svg开始标签更改为:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="1000px" width="1000px">

无需使用即可获得类似(可见)的结果autoSize=0

相关内容