用于读取和转换svg的纯python库
svglib的Python项目详细描述
关于
Svglib是一个纯python库,用于读取SVG文件和转换 它们(在合理程度上)使用ReportLab打开 源工具包。
用作包,可以读取现有SVG文件并将其转换为 reportlabDrawing对象,可以在各种上下文中使用, 例如,作为reportlab platypusFlowable对象或在RML中。 作为命令行工具,它将svg文件转换为pdf文件(但是添加 其他输出格式如位图或eps非常简单,而且会更好 支持,很快)。
测试包括一个巨大的W3C SVG test suite加上大约200flags from Wikipedia和一些选定的symbols from Wikipedia(随着 更少地指向缺失的功能)。
功能
- 将SVG文件转换为ReportLab图形Drawing对象
- 处理普通或压缩的SVG文件(.svg和.svgz)
- 在命令行上允许输出文件的模式
- 安装一个名为svglib 的python包
- 安装名为svg2pdf 的python命令行脚本
- 提供一个覆盖率超过90%的PyTest测试套件
- 从Internet提取后测试整个W3C SVG test suite
- 从Internet提取后测试所有SVG flags from Wikipedia
- 从网络中拉出后测试选定的svg symbols from Wikipedia
- 在Python2.7和Python3.5、3.6和3.7上运行
已知限制
- 对样式表的支持仍处于试验阶段。请报告任何 svglib issue tracker上的错误或缺点。
- 剪辑仅限于单个路径,不支持掩码
- 不支持颜色渐变
示例
可以将svglib用作python包,例如 交互式python会话:
>>> from svglib.svglib import svg2rlg >>> from reportlab.graphics import renderPDF, renderPM >>> >>> drawing = svg2rlg("file.svg") >>> renderPDF.drawToFile(drawing, "file.pdf") >>> renderPM.drawToFile(drawing, "file.png", fmt="PNG")
注意,drawToFile的第二个参数可以是任何 Python file object,如果不想得到结果,就像一个BytesIO缓冲区 例如写在磁盘上。
此外,名为svg2pdf的脚本可以从 系统命令行。这是svg2pdf -h:
的输出usage: svg2pdf [-h] [-v] [-o PATH_PAT] [PATH [PATH ...]] svg2pdf v. 0.9.2 A converter from SVG to PDF (via ReportLab Graphics) positional arguments: PATH Input SVG file path with extension .svg or .svgz. optional arguments: -h, --help show this help message and exit -v, --version Print version number and exit. -o PATH_PAT, --output PATH_PAT Set output path (incl. the placeholders: dirname, basename,base, ext, now) in both, %(name)s and {name} notations. examples: # convert path/file.svg to path/file.pdf svg2pdf path/file.svg # convert file1.svg to file1.pdf and file2.svgz to file2.pdf svg2pdf file1.svg file2.svgz # convert file.svg to out.pdf svg2pdf -o out.pdf file.svg # convert all SVG files in path/ to PDF files with names like: # path/file1.svg -> file1.pdf svg2pdf -o "%(base)s.pdf" path/file*.svg # like before but with timestamp in the PDF files: # path/file1.svg -> path/out-12-58-36-file1.pdf svg2pdf -o {{dirname}}/out-{{now.hour}}-{{now.minute}}-{{now.second}}-%(base)s.pdf path/file*.svg issues/pull requests: https://github.com/deeplook/svglib Copyleft by Dinu Gherman, 2008-2018 (LGPL 3): http://www.gnu.org/copyleft/gpl.html
依赖关系
Svglib主要依赖于reportlab包,它提供 构建复杂Drawings的抽象,它可以呈现 转换成不同的文件格式,包括pdf、eps、svg和各种位图 一个。其他依赖项是lxml,在svg上下文中使用 CSS样式表。
安装
有三种方法可以安装svglib。
一。使用pip
使用系统上的pip命令和工作的Internet 连接您只能使用 终端中的一个命令:
$ pip install svglib
您还可以使用pip安装 来自github的存储库,但是您将无法方便地 运行测试套件:
$ pip install git+https://github.com/deeplook/svglib
2.使用conda
如果您使用Anaconda或Miniconda,那么您肯定使用了它各自的包 经理,Conda,以及。在这种情况下,您应该能够安装svglib 使用这些简单的命令:
$ conda config --add channels conda-forge $ conda install svglib
Svglib被nicoddemus打包为conda。请看这里 svglib with conda。
三。手动安装
或者,您可以安装类似^{tt25}的tarball$ 从svglib page on PyPI或 svglib releases page on GitHub并执行一系列命令 如图所示:
$ tar xfz svglib-<version>.tar.gz $ cd svglib-<version> $ python setup.py install
这将在 site-packagespython安装和脚本的子文件夹 在bin目录中名为svg2pdf的工具,例如 /usr/local/bin。
测试
svglibtarball分布包含一个PyTest测试套件 在tests目录中。在那里,在tests/README.rst中,您可以 同时阅读更多关于测试的内容。你可以运行测试套件例如,like 在命令行的以下行中显示:
$ tar xfz svglib-<version>.tar.gz $ cd svglib-<version> $ PYTHONPATH=. py.test ======================== test session starts ========================= platform darwin -- Python 3.5.2, pytest-3.0.5, py-1.4.32, pluggy-0.4.0 rootdir: /Users/dinu/repos/github/deeplook/svglib, inifile: plugins: cov-2.4.0 collected 36 items tests/test_basic.py ............................ tests/test_samples.py .s.s.s.s =============== 32 passed, 4 skipped in 49.18 seconds ================
错误报告
请报告github上svglib issue tracker的错误(pull 也感谢您的要求)! 如有必要,请包括有关操作系统的信息,如 以及使用的svglib、reportlab和python版本!