python svg2rlg_使cairosvg在Windows中工作

Trying to get this code working:

import cairosvg

import os

path = "D:/PyProjects/Bla/Temp"

os.chdir(path)

cairosvg.svg2pdf(url='Pic.svg', write_to='image.pdf')

but get errors along similar to this post:

Traceback (most recent call last):

File "D:/work/lean_python/pdf/other.py", line 2, in

import cairosvg

File "D:\env_python352\lib\site-packages\cairosvg\__init__.py", line 29, in

from . import surface

File "D:\env_python352\lib\site-packages\cairosvg\surface.py", line 24, in

import cairocffi as cairo

File "D:\env_python352\lib\site-packages\cairocffi\__init__.py", line 46, in

cairo = dlopen(ffi, 'cairo', 'cairo-2')

File "D:\env_python352\lib\site-packages\cairocffi\__init__.py", line 43, in dlopen

raise OSError("dlopen() failed to load a library: %s" % ' / '.join(names))

OSError: dlopen() failed to load a library: cairo / cairo-2

The post mentions:

CairoSVG (the python library and bindings) needs Cairo (The C library, part of GTK+) to run. It appears you don't have it an it's headers installed on your system.

So I followed step 1 - 5 described here. I now have cairo header files in:

C:\msys64\mingw64\include\cairo

I also installed pycairo recommended by another source:

pip install pycairo-1.15.2-cp36-cp36m-win_amd64.whl

I still get the above errors. Any ideas?

解决方案

I just do not get cairosvg to work. I found an alternative way to transform an svg into a png using the svglib package.

from svglib.svglib import svg2rlg

from reportlab.graphics import renderPDF, renderPM

import os

path = "D:/Bla/Temp"

os.chdir(path)

drawing = svg2rlg("Pic.svg")

renderPM.drawToFile(drawing, "Pic.png")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值