一个用于读取和转换SVG的纯Python库
项目描述
关于
Svglib 是一个用于读取 SVG 文件并将它们(在一定程度上)转换为其他格式的纯Python库,使用 ReportLab 开源工具包。
作为包使用时,您可以用它读取现有的SVG文件并将它们转换为ReportLab 绘图 对象,这些对象可以在各种环境中使用,例如作为ReportLab Platypus 流式 对象或在RML中。作为一个命令行工具,它可以将SVG文件转换为PDF文件(但添加其他输出格式,如位图或EPS非常简单,并且将得到更好的支持)。
测试包括一个庞大的W3C SVG测试套件,以及约200个来自维基百科的国旗和一些精选的来自维基百科的符号(这些测试越来越不指向缺少的功能)。
特性
已知限制
样式表中的@import规则被忽略。支持CSS,但支持的属性范围仍然有限
裁剪仅限于单一路径,不支持蒙版
不支持颜色渐变(ReportLab的限制)
不支持SVG ForeignObject元素
示例
您可以将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文件对象,例如,如果您不想将结果写入磁盘,可以使用BytesIO缓冲区。
此外,名为svg2pdf的脚本也可以从系统命令行更方便地使用。以下是svg2pdf -h的输出
usage: svg2pdf [-h] [-v] [-o PATH_PAT] [PATH [PATH ...]] svg2pdf v. x.x.x 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-2021 (LGPL 3): https://gnu.ac.cn/copyleft/gpl.html
依赖项
Svglib主要依赖于reportlab包,该包提供了构建复杂绘图的抽象,它可以将其渲染为不同的文件格式,包括PDF、EPS、SVG和各种位图格式。其他依赖项是用于SVG CSS样式表的lxml。
安装
安装svglib有三种方法。
1. 使用
pip
使用系统上的pip命令和一个有效的互联网连接,您可以在终端中仅使用一条命令安装最新版本的svglib
$ 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 与 conda 的更多信息,请参阅此处。
3. 手动安装
或者,您可以从 PyPI 上的 svglib 页面 或 GitHub 上的 svglib 发布页面 下载类似 svglib-<version>.tar.gz 的存档文件,然后执行以下类似的命令序列:
$ tar xfz svglib-<version>.tar.gz $ cd svglib-<version> $ python setup.py install
这将将在您的 Python 安装目录的 site-packages 子目录中安装名为 svglib 的 Python 包,并在您的 bin 目录中安装名为 svg2pdf 的脚本工具,例如在 /usr/local/bin。
测试
svglib 的 tarball 分发包含一个位于 tests 目录中的 PyTest 测试套件。在那里,您还可以在 tests/README.rst 中阅读有关测试的更多信息。您可以在命令行上运行测试套件,例如以下行所示:
$ tar xfz svglib-<version>.tar.gz $ cd svglib-<version> $ PYTHONPATH=. py.test ======================== test session starts ========================= platform darwin -- Python 3.7.3, pytest-5.0.1, py-1.8.0, pluggy-0.12.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 问题跟踪器 中(也欢迎拉取请求)!如果需要,请包括有关操作系统以及所使用的 svglib、ReportLab 和 Python 版本的信息!
项目详情
svglib-1.5.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587 |
|
MD5 | 31edde0d5873b2ee8b92731464061012 |
|
BLAKE2b-256 | 565b53ca0fd447f73423c7dc59d34e523530ef434481a3d18808ff7537ad33ec |