用于读取和转换svg的纯python库

svglib的Python项目详细描述


http://img.shields.io/travis/deeplook/svglib.svghttps://ci.appveyor.com/api/projects/status/4guofbxkwgsu8537/branch/master?svg=truehttps://pyup.io/repos/github/deeplook/svglib/shield.svghttps://img.shields.io/pypi/implementation/svglib.svghttps://img.shields.io/pypi/pyversions/svglib.svghttps://img.shields.io/pypi/dm/svglib.svghttps://img.shields.io/pypi/v/svglib.svghttps://img.shields.io/conda/vn/conda-forge/svglib.svghttps://img.shields.io/conda/dn/conda-forge/svglib.svghttps://img.shields.io/conda/pn/conda-forge/svglib.svghttps://img.shields.io/pypi/l/svglib.svg

关于

Svglib是一个纯python库,用于读取SVG文件和转换 它们(在合理程度上)使用ReportLab打开 源工具包。

用作包,可以读取现有SVG文件并将其转换为 reportlabDrawing对象,可以在各种上下文中使用, 例如,作为reportlab platypusFlowable对象或在RML中。 作为命令行工具,它将svg文件转换为pdf文件(但是添加 其他输出格式如位图或eps非常简单,而且会更好 支持,很快)。

测试包括一个巨大的W3C SVG test suite加上大约200flags from Wikipedia和一些选定的symbols from Wikipedia(随着 更少地指向缺失的功能)。

以前的版本托管在https://bitbucket.org/deeplook/svglib

功能

  • 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

如果您使用AnacondaMiniconda,那么您肯定使用了它各自的包 经理,Conda,以及。在这种情况下,您应该能够安装svglib 使用这些简单的命令:

$ conda config --add channels conda-forge
$ conda install svglib

Svglibnicoddemus打包为conda。请看这里 svglib with conda

三。手动安装

或者,您可以安装类似^{tt25}的tarball$ 从svglib page on PyPIsvglib 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版本!

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何将长字符串转换为短得多的字符串   java类型ArrayList<Boolean>中的toArray(T[])方法不适用于参数(Boolean[])   java xfire webservice客户端获取空响应   java软件框架和软件平台有什么区别?   java构建了一个监听数据库更改并调用其他方法的软件。我做得对吗?   安卓 studio(java)中的Paypal:与服务器通信的问题   我们如何在运行时更改java提供的内置注释的消息   java成批进行http调用   序列化   当我使用Tomcat运行我的应用程序时,我得到了java。网MalformedURLException:本地主机名未知:java。网未知后异常   操作系统Java内存映射文件和刷新   java无法用v6构建JXBrowser jar。18+   java有没有办法从运行在同一台服务器上的代码中获取服务器指纹?   使用“代理”用户的java Spring Active Directory身份验证   在Android(Kotlin/Java)活动之间发送图像   java显示ArrayList对象?