a simple presentation utility that turns inkscape SVGs into images and multi-page pdfs with configurable layer visibility and zoom definitions
Project description
Inkplot
Inkplot makes PDFs and PNGs out of Inkscape SVG documents using a simple YAML file that describes for each image or pdf page page:
- the source SVG
- visibiilty for each of the SVG's layers
- the page's zoom extents
It's purpose is to make it easy to produce PDFs from SVGs where the workflow includes turning layers on and off and zooming around to different spots in the document space.
The project's original aim is to enable the creation of a set of planning documents with title blocks, page numbers, compass rose and scale, etc. with pages that include various systems like water, septic, and electrical with labels and line weights appropriate to the scale.
I've often wanted a tool like this to exist, but only just embarked on the project that's involved enough to justify the effort.
I hope other folks find it useful. Enjoy!
Pages
To keep things brief, inkplot pages can use shared layersets and zoom rectangles:
shared:
layersets:
- name: hide-all
source: farm.svg
hidden:
- '**'
- name: basemap-imagery
source: farm.svg
visible: True
layers:
- "site>>basemap>>**"
- name: titleblock-frontpage
source: farm.svg
visible:
- "titleblock>>full extent frame>>boxes"
- "titleblock>>full extent frame>>mask"
- "scale>>full extent scale"
zoom-rectangles:
- name: whole-site-frame
id: residences-site-frame-lg
- name: both-residences-frame
id: residences-site-frame-sm
To define the PDFs that can be generated using inkplot and the render definition
YAML file, A page definition can reference layersets and simply define any additional
layers that need to be turned on or off above and beyond the shared layersets
listed in include-layersets
:
pdfs:
- name: example_pdf
pages:
- name: frontpage
source: farm.svg
include-layersets:
- "hide-all"
- "basemap-imagery"
- "titleblock-frontpage"
layersets:
- visible: True
layers:
- "titleblock>>full extent frame>>title>>overview-basemap"
include-zoom-rectangle: whole-site-frame
And, because it's a YAML file, we can gain a bit more brevity yet using YAML aliases:
pdfs:
- name: example_pdf
pages:
# this one defines the front page but also makes a template of sorts named
# pg-imagery-with-titleblock that can be used later
- &pg-imagery-with-titleblock
name: frontpage
source: farm.svg
include-layersets:
- "hide-all"
- "basemap-imagery"
- "titleblock-frontpage"
layersets:
- visible: True
layers:
- "titleblock>>full extent frame>>title>>overview-basemap"
include-zoom-rectangle: whole-site-frame
# this defines a page that includes everything in the frontpage def, but
# redefines the layersets (keeping the layersets referenced in
# include-layersets)
- *pg-imagery-with-titleblock
name: siteplan
layersets:
visible:
- "titleblock>>full extent frame>>title>>site-plan"
- "bldgs>>**"
- "site/infrastructure/fences/**"
To define images, that, like pages, can be generated at the command line, we can include an images section that is very similar to the pages section:
images:
- name: site-range-hill
source: farm.svg
include-layersets:
- "hide-all"
- "titleblock-brewery-site"
- "shared-brewery-site"
layersets:
- visible:
- "proposed>>brewery>>sites 1>>range hill"
- hidden: []
include-zoom-rectangle: brewery-site-plan-frame
Using the CLI
To create all defined PDFs and images, use the simple CLI:
inkplot example.yml
and to create individual PDFs and images use:
# produce a single PDF
inkplot example.yml --pdf example_pdf
# produce an individual image
inkplot example.yml --image site-range-hill
And that should do it.
Installing
Installing is as simple as:
pip install inkplot
and you'll need to have Inkscape installed.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file inkplot-0.2.1.tar.gz
.
File metadata
- Download URL: inkplot-0.2.1.tar.gz
- Upload date:
- Size: 14.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5f49b52499f580af4a2d4131343511de38b9ed15529d362759723fa7a94f9c4d |
|
MD5 | 73f13207533954697c7d03c4e8c3df97 |
|
BLAKE2b-256 | 22272a181ecc5bfc336a196df277b36fab0aaa3535ade4227649b325f3a9c8df |
File details
Details for the file inkplot-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: inkplot-0.2.1-py3-none-any.whl
- Upload date:
- Size: 13.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | cf9a684227b137c6571d377d2a3495946fffebfaa27c5c20cc2ded209d2f4db9 |
|
MD5 | 4269424c50e6120ed3e6dcf3a610c72e |
|
BLAKE2b-256 | 4d281099dd1f99c1fb3859861b2f4b2759244ff41240890f91cf6a2fead609fa |