将SVG转换为PDF(svglib + reportlab不够好)

Oli*_*Oli 9 python pdf svg reportlab

我正在批量创建一些SVG,需要将它们转换为PDF文档进行打印.我一直在尝试使用svglib它的svg2rlg方法,但我刚刚发现它在保存文档中的矢量图形方面绝对令人震惊.它几乎无法正确定位文本.

我动态生成的SVG格式正确,我svglib在原始输入上进行了测试,以确保它不是我要介绍的问题.

那么我过去svglib和ReportLab的选择是什么?它要么必须是免费的,要么非常便宜,因为我们已经超出了该项目的预算.我们负担不起ReportLab Plus的1k /年费用.

我正在使用Python,但在这个阶段,只要它在我们的Ubuntu服务器上运行,我就很高兴.

编辑:经过测试的王子.更好,但它仍然忽略了一半的文件.

ram*_*am1 9

我为此使用inkscape.在您的django视图中,请执行以下操作:

from subprocess import Popen

x = Popen(['/usr/bin/inkscape', your_svg_input, \
    '--export-pdf=%s' % your_pdf_output])
try:
    waitForResponse(x)
except OSError, e:
    return False

def waitForResponse(x): 
    out, err = x.communicate() 
    if x.returncode < 0: 
        r = "Popen returncode: " + str(x.returncode) 
        raise OSError(r)
Run Code Online (Sandbox Code Playgroud)

您可能需要将.svg中引用的所有字体文件作为参数传递给inkscape,因此如果您的文本在.pdf输出中没有正确显示,请记住这一点.


pla*_*aes 3

CairoSVG是我正在使用的:

import cairosvg
cairosvg.svg2pdf(url='image.svg', write_to='image.pdf')
Run Code Online (Sandbox Code Playgroud)