.. -*- mode: rst -*-
======
Svglib
======
---------------------------------------------------------------------------
A pure-Python library for reading and converting SVG
---------------------------------------------------------------------------
.. image:: https://github.com/deeplook/svglib/workflows/CI/badge.svg
:target: https://github.com/deeplook/svglib/actions?query=workflow%3ACI
.. image:: https://results.pre-commit.ci/badge/github/deeplook/svglib/master.svg
:target: https://results.pre-commit.ci/latest/github/deeplook/svglib/master
:alt: pre-commit.ci status
.. image:: https://pyup.io/repos/github/deeplook/svglib/shield.svg
:target: https://pyup.io/repos/github/deeplook/svglib/
.. image:: https://img.shields.io/pypi/implementation/svglib.svg
:target: https://pypi.org/project/svglib
.. image:: https://img.shields.io/pypi/pyversions/svglib.svg
:target: https://pypi.org/project/svglib
.. image:: https://img.shields.io/pypi/dm/svglib.svg
:target: https://pepy.tech/project/svglib
.. image:: https://img.shields.io/pypi/v/svglib.svg
:target: https://pypi.org/project/svglib
.. image:: https://img.shields.io/conda/vn/conda-forge/svglib.svg
:target: https://github.com/conda-forge/svglib-feedstock
.. image:: https://img.shields.io/conda/dn/conda-forge/svglib.svg
:target: https://github.com/conda-forge/svglib-feedstock
.. image:: https://img.shields.io/conda/pn/conda-forge/svglib.svg
:target: https://pypi.org/project/svglib
.. image:: https://img.shields.io/pypi/l/svglib.svg
:target: https://pypi.org/project/svglib
.. image:: https://static.streamlit.io/badges/streamlit_badge_black_white.svg
:target: https://share.streamlit.io/deeplook/streamlit-svglib/master/streamlit_app.py
About
-----
``Svglib`` is a pure-Python library for reading SVG_ files and converting
them (to a reasonable degree) to other formats using the ReportLab_ Open
Source toolkit.
Used as a package you can read existing SVG files and convert them into
ReportLab ``Drawing`` objects that can be used in a variety of contexts,
e.g. as ReportLab Platypus ``Flowable`` objects or in RML_.
As a command-line tool it converts SVG files into PDF ones (but adding
other output formats like bitmap or EPS is really easy and will be better
supported, soon).
Tests include a huge `W3C SVG test suite`_ plus ca. 200 `flags from
Wikipedia`_ and some selected `symbols from Wikipedia`_ (with increasingly
less pointing to missing features).
Features
--------
- convert SVG_ files into ReportLab_ Graphics ``Drawing`` objects
- handle plain or compressed SVG files (.svg and .svgz)
- allow patterns for output files on command-line
- install a Python package named ``svglib``
- install a Python command-line script named ``svg2pdf``
- provide a PyTest_ test suite with over 90% code coverage
- test entire `W3C SVG test suite`_ after pulling from the internet
- test all SVG `flags from Wikipedia`_ after pulling from the internet
- test selected SVG `symbols from Wikipedia`_ after pulling from the net
- support Python 3.7+ and PyPy3
Known limitations
-----------------
- @import rules in stylesheets are ignored. CSS is supported, but the range
of supported attributes is still limited
- clipping is limited to single paths, no mask support
- color gradients are not supported (limitation of reportlab)
- SVG ``ForeignObject`` elements are not supported.
Examples
--------
You can use ``svglib`` as a Python package e.g. like in the following
interactive Python session:
.. code:: 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")
Note that the second parameter of ``drawToFile`` can be any
`Python file object`_, like a ``BytesIO`` buffer if you don't want the result
to be written on disk for example.
In addition a script named ``svg2pdf`` can be used more easily from
the system command-line. Here is the output from ``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):
http://www.gnu.org/copyleft/gpl.html
Dependencies
------------
``Svglib`` depends mainly on the ``reportlab`` package, which provides
the abstractions for building complex ``Drawings`` which it can render
into different fileformats, including PDF, EPS, SVG and various bitmaps
ones. Other dependancies are ``lxml`` which is used in the context of SVG
CSS stylesheets.
Installation
------------
There are three ways to install ``svglib``.
1. Using ``pip``
++++++++++++++++
With the ``pip`` command on your system and a working internet
connection you can install the newest version of ``svglib`` with only
one command in a terminal::
$ pip install svglib
You can also use ``pip`` to install the very latest version of the
repository from GitHub, but then you won't be able to conveniently
run the test suite::
$ pip install git+https://github.com/deeplook/svglib
2. Using ``conda``
++++++++++++++++++
If you use Anaconda_ or Miniconda_ you are surely using its respective package
manager, Conda_, as well. In that case you should be able to install ``svglib``
using these simple commands::
$ conda config --add channels conda-forge
$ conda install svglib
``Svglib`` was kindly packaged for ``conda`` by nicoddemus_. See here more about
`svglib with conda`_.
3. Manual installation
+++++++++++++++++++++++
Alternatively, you can install a tarball like ``svglib-<version>.tar.gz``
after downloading it from the `svglib page on PyPI`_ or the
`svglib releases page on GitHub`_ and executing a sequence of commands
like shown here::
$ tar xfz svglib-<version>.tar.gz
$ cd svglib-<version>
$ python setup.py install
This will install a Python package named ``svglib`` in the
``site-packages`` subfolder of your Python installation and a script
tool named ``svg2pdf`` in your ``bin`` directory, e.g. in
``/usr/local/bin``.
Testing
-------
The ``svglib`` tarball distribution contains a PyTest_ test suite
in the ``tests`` directory. There, in ``tests/README.rst``, you can
also read more about testing. You can run the testsuite e.g. like
shown in the following lines on the command-line::
$ 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 ================
Bug reports
-----------
Please report bugs on the `svglib issue tracker`_ on GitHub (pull
requests are also appreciated)!
If necessary, please include information about the operating system, as
well as the versions of ``svglib``, ReportLab and Python being used!
.. _SVG: http://www.w3.org/Graphics/SVG/
.. _W3C SVG test suite:
http://www.w3.org/Graphics/SVG/WG/wiki/Test_Suite_Overview
.. _flags from Wikipedia:
https://en.wikipedia.org/wiki/Gallery_of_sovereign_state_flags
.. _symbols from Wikipedia:
https://en.wikipedia.org/wiki/List_of_symbols
.. _ReportLab: https://www.reportlab.com/opensource/
.. _RML: https://www.reportlab.com/software/rml-reference/
.. _svglib issue tracker: https://github.com/deeplook/svglib/issues
.. _PyTest: http://pytest.org
.. _svglib page on PyPI: https://pypi.org/project/svglib/
.. _svglib releases page on GitHub: https://github.com/deeplook/svglib/releases
.. _Python file object: https://docs.python.org/3/glossary.html#term-file-object
.. _Anaconda: https://www.anaconda.com/download/
.. _Miniconda: https://conda.io/miniconda.html
.. _Conda: https://conda.io
.. _svglib with conda: https://github.com/conda-forge/svglib-feedstock
.. _nicoddemus: https://github.com/nicoddemus
Raw data
{
"_id": null,
"home_page": "https://github.com/deeplook/svglib",
"name": "svglib",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "SVG,PDF,reportlab,conversion,graphics",
"author": "Dinu Gherman",
"author_email": "gherman@darwin.in-berlin.de",
"download_url": "https://files.pythonhosted.org/packages/56/5b/53ca0fd447f73423c7dc59d34e523530ef434481a3d18808ff7537ad33ec/svglib-1.5.1.tar.gz",
"platform": null,
"description": ".. -*- mode: rst -*-\n\n======\nSvglib\n======\n\n---------------------------------------------------------------------------\nA pure-Python library for reading and converting SVG\n---------------------------------------------------------------------------\n\n.. image:: https://github.com/deeplook/svglib/workflows/CI/badge.svg\n :target: https://github.com/deeplook/svglib/actions?query=workflow%3ACI\n\n.. image:: https://results.pre-commit.ci/badge/github/deeplook/svglib/master.svg\n :target: https://results.pre-commit.ci/latest/github/deeplook/svglib/master\n :alt: pre-commit.ci status\n\n.. image:: https://pyup.io/repos/github/deeplook/svglib/shield.svg\n :target: https://pyup.io/repos/github/deeplook/svglib/\n\n.. image:: https://img.shields.io/pypi/implementation/svglib.svg\n :target: https://pypi.org/project/svglib\n\n.. image:: https://img.shields.io/pypi/pyversions/svglib.svg\n :target: https://pypi.org/project/svglib\n\n.. image:: https://img.shields.io/pypi/dm/svglib.svg\n :target: https://pepy.tech/project/svglib\n\n.. image:: https://img.shields.io/pypi/v/svglib.svg\n :target: https://pypi.org/project/svglib\n\n.. image:: https://img.shields.io/conda/vn/conda-forge/svglib.svg\n :target: https://github.com/conda-forge/svglib-feedstock\n\n.. image:: https://img.shields.io/conda/dn/conda-forge/svglib.svg\n :target: https://github.com/conda-forge/svglib-feedstock\n\n.. image:: https://img.shields.io/conda/pn/conda-forge/svglib.svg\n :target: https://pypi.org/project/svglib\n\n.. image:: https://img.shields.io/pypi/l/svglib.svg\n :target: https://pypi.org/project/svglib\n\n.. image:: https://static.streamlit.io/badges/streamlit_badge_black_white.svg\n :target: https://share.streamlit.io/deeplook/streamlit-svglib/master/streamlit_app.py\n\n\nAbout\n-----\n\n``Svglib`` is a pure-Python library for reading SVG_ files and converting\nthem (to a reasonable degree) to other formats using the ReportLab_ Open\nSource toolkit.\n\nUsed as a package you can read existing SVG files and convert them into\nReportLab ``Drawing`` objects that can be used in a variety of contexts,\ne.g. as ReportLab Platypus ``Flowable`` objects or in RML_.\nAs a command-line tool it converts SVG files into PDF ones (but adding\nother output formats like bitmap or EPS is really easy and will be better\nsupported, soon).\n\nTests include a huge `W3C SVG test suite`_ plus ca. 200 `flags from\nWikipedia`_ and some selected `symbols from Wikipedia`_ (with increasingly\nless pointing to missing features).\n\n\nFeatures\n--------\n\n- convert SVG_ files into ReportLab_ Graphics ``Drawing`` objects\n- handle plain or compressed SVG files (.svg and .svgz)\n- allow patterns for output files on command-line\n- install a Python package named ``svglib``\n- install a Python command-line script named ``svg2pdf``\n- provide a PyTest_ test suite with over 90% code coverage\n- test entire `W3C SVG test suite`_ after pulling from the internet\n- test all SVG `flags from Wikipedia`_ after pulling from the internet\n- test selected SVG `symbols from Wikipedia`_ after pulling from the net\n- support Python 3.7+ and PyPy3\n\n\nKnown limitations\n-----------------\n\n- @import rules in stylesheets are ignored. CSS is supported, but the range\n of supported attributes is still limited\n- clipping is limited to single paths, no mask support\n- color gradients are not supported (limitation of reportlab)\n- SVG ``ForeignObject`` elements are not supported.\n\n\nExamples\n--------\n\nYou can use ``svglib`` as a Python package e.g. like in the following\ninteractive Python session:\n\n.. code:: python\n\n >>> from svglib.svglib import svg2rlg\n >>> from reportlab.graphics import renderPDF, renderPM\n >>>\n >>> drawing = svg2rlg(\"file.svg\")\n >>> renderPDF.drawToFile(drawing, \"file.pdf\")\n >>> renderPM.drawToFile(drawing, \"file.png\", fmt=\"PNG\")\n\nNote that the second parameter of ``drawToFile`` can be any\n`Python file object`_, like a ``BytesIO`` buffer if you don't want the result\nto be written on disk for example.\n\nIn addition a script named ``svg2pdf`` can be used more easily from\nthe system command-line. Here is the output from ``svg2pdf -h``::\n\n usage: svg2pdf [-h] [-v] [-o PATH_PAT] [PATH [PATH ...]]\n\n svg2pdf v. x.x.x\n A converter from SVG to PDF (via ReportLab Graphics)\n\n positional arguments:\n PATH Input SVG file path with extension .svg or .svgz.\n\n optional arguments:\n -h, --help show this help message and exit\n -v, --version Print version number and exit.\n -o PATH_PAT, --output PATH_PAT\n Set output path (incl. the placeholders: dirname,\n basename,base, ext, now) in both, %(name)s and {name}\n notations.\n\n examples:\n # convert path/file.svg to path/file.pdf\n svg2pdf path/file.svg\n\n # convert file1.svg to file1.pdf and file2.svgz to file2.pdf\n svg2pdf file1.svg file2.svgz\n\n # convert file.svg to out.pdf\n svg2pdf -o out.pdf file.svg\n\n # convert all SVG files in path/ to PDF files with names like:\n # path/file1.svg -> file1.pdf\n svg2pdf -o \"%(base)s.pdf\" path/file*.svg\n\n # like before but with timestamp in the PDF files:\n # path/file1.svg -> path/out-12-58-36-file1.pdf\n svg2pdf -o {{dirname}}/out-{{now.hour}}-{{now.minute}}-{{now.second}}-%(base)s.pdf path/file*.svg\n\n issues/pull requests:\n https://github.com/deeplook/svglib\n\n Copyleft by Dinu Gherman, 2008-2021 (LGPL 3):\n http://www.gnu.org/copyleft/gpl.html\n\n\nDependencies\n------------\n\n``Svglib`` depends mainly on the ``reportlab`` package, which provides\nthe abstractions for building complex ``Drawings`` which it can render\ninto different fileformats, including PDF, EPS, SVG and various bitmaps\nones. Other dependancies are ``lxml`` which is used in the context of SVG\nCSS stylesheets.\n\n\nInstallation\n------------\n\nThere are three ways to install ``svglib``.\n\n1. Using ``pip``\n++++++++++++++++\n\nWith the ``pip`` command on your system and a working internet\nconnection you can install the newest version of ``svglib`` with only\none command in a terminal::\n\n $ pip install svglib\n\nYou can also use ``pip`` to install the very latest version of the\nrepository from GitHub, but then you won't be able to conveniently\nrun the test suite::\n\n $ pip install git+https://github.com/deeplook/svglib\n\n\n2. Using ``conda``\n++++++++++++++++++\n\nIf you use Anaconda_ or Miniconda_ you are surely using its respective package\nmanager, Conda_, as well. In that case you should be able to install ``svglib``\nusing these simple commands::\n\n $ conda config --add channels conda-forge\n $ conda install svglib\n\n``Svglib`` was kindly packaged for ``conda`` by nicoddemus_. See here more about\n`svglib with conda`_.\n\n\n3. Manual installation\n+++++++++++++++++++++++\n\nAlternatively, you can install a tarball like ``svglib-<version>.tar.gz``\nafter downloading it from the `svglib page on PyPI`_ or the\n`svglib releases page on GitHub`_ and executing a sequence of commands\nlike shown here::\n\n $ tar xfz svglib-<version>.tar.gz\n $ cd svglib-<version>\n $ python setup.py install\n\nThis will install a Python package named ``svglib`` in the\n``site-packages`` subfolder of your Python installation and a script\ntool named ``svg2pdf`` in your ``bin`` directory, e.g. in\n``/usr/local/bin``.\n\n\nTesting\n-------\n\nThe ``svglib`` tarball distribution contains a PyTest_ test suite\nin the ``tests`` directory. There, in ``tests/README.rst``, you can\nalso read more about testing. You can run the testsuite e.g. like\nshown in the following lines on the command-line::\n\n $ tar xfz svglib-<version>.tar.gz\n $ cd svglib-<version>\n $ PYTHONPATH=. py.test\n ======================== test session starts =========================\n platform darwin -- Python 3.7.3, pytest-5.0.1, py-1.8.0, pluggy-0.12.0\n rootdir: /Users/dinu/repos/github/deeplook/svglib, inifile:\n plugins: cov-2.4.0\n collected 36 items\n\n tests/test_basic.py ............................\n tests/test_samples.py .s.s.s.s\n\n =============== 32 passed, 4 skipped in 49.18 seconds ================\n\n\nBug reports\n-----------\n\nPlease report bugs on the `svglib issue tracker`_ on GitHub (pull\nrequests are also appreciated)!\nIf necessary, please include information about the operating system, as\nwell as the versions of ``svglib``, ReportLab and Python being used!\n\n\n.. _SVG: http://www.w3.org/Graphics/SVG/\n.. _W3C SVG test suite:\n http://www.w3.org/Graphics/SVG/WG/wiki/Test_Suite_Overview\n.. _flags from Wikipedia:\n https://en.wikipedia.org/wiki/Gallery_of_sovereign_state_flags\n.. _symbols from Wikipedia:\n https://en.wikipedia.org/wiki/List_of_symbols\n.. _ReportLab: https://www.reportlab.com/opensource/\n.. _RML: https://www.reportlab.com/software/rml-reference/\n.. _svglib issue tracker: https://github.com/deeplook/svglib/issues\n.. _PyTest: http://pytest.org\n.. _svglib page on PyPI: https://pypi.org/project/svglib/\n.. _svglib releases page on GitHub: https://github.com/deeplook/svglib/releases\n.. _Python file object: https://docs.python.org/3/glossary.html#term-file-object\n.. _Anaconda: https://www.anaconda.com/download/\n.. _Miniconda: https://conda.io/miniconda.html\n.. _Conda: https://conda.io\n.. _svglib with conda: https://github.com/conda-forge/svglib-feedstock\n.. _nicoddemus: https://github.com/nicoddemus",
"bugtrack_url": null,
"license": "LGPL 3",
"summary": "A pure-Python library for reading and converting SVG",
"version": "1.5.1",
"split_keywords": [
"svg",
"pdf",
"reportlab",
"conversion",
"graphics"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "565b53ca0fd447f73423c7dc59d34e523530ef434481a3d18808ff7537ad33ec",
"md5": "31edde0d5873b2ee8b92731464061012",
"sha256": "3ae765d3a9409ee60c0fb4d24c2deb6a80617aa927054f5bcd7fc98f0695e587"
},
"downloads": -1,
"filename": "svglib-1.5.1.tar.gz",
"has_sig": true,
"md5_digest": "31edde0d5873b2ee8b92731464061012",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 913900,
"upload_time": "2023-01-07T14:11:52",
"upload_time_iso_8601": "2023-01-07T14:11:52.990982Z",
"url": "https://files.pythonhosted.org/packages/56/5b/53ca0fd447f73423c7dc59d34e523530ef434481a3d18808ff7537ad33ec/svglib-1.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-07 14:11:52",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "deeplook",
"github_project": "svglib",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"tox": true,
"lcname": "svglib"
}