Oli*_*Oli 9 python pdf svg reportlab
我正在批量创建一些SVG,需要将它们转换为PDF文档进行打印.我一直在尝试使用svglib它的svg2rlg方法,但我刚刚发现它在保存文档中的矢量图形方面绝对令人震惊.它几乎无法正确定位文本.
我动态生成的SVG格式正确,我svglib在原始输入上进行了测试,以确保它不是我要介绍的问题.
那么我过去svglib和ReportLab的选择是什么?它要么必须是免费的,要么非常便宜,因为我们已经超出了该项目的预算.我们负担不起ReportLab Plus的1k /年费用.
我正在使用Python,但在这个阶段,只要它在我们的Ubuntu服务器上运行,我就很高兴.
编辑:经过测试的王子.更好,但它仍然忽略了一半的文件.
我为此使用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输出中没有正确显示,请记住这一点.
CairoSVG是我正在使用的:
import cairosvg
cairosvg.svg2pdf(url='image.svg', write_to='image.pdf')
Run Code Online (Sandbox Code Playgroud)