Python bindings for libcdr (CorelDRAW/CMX parser).
Project description
Python bindings for libcdr
Intro
Simple Python bindings for the libcdr. The binding chain is:
Python (CDRParser) → Cython (.pyx) → C++ (parser.cxx) → libcdr / librevenge
Installation
First, the libcdr newer than v0.1.8 must be compiled.
E.g. on Debian:
apt-get install automake cmake libtool libboost-all-dev libicu-dev liblcms2-dev librevenge-dev libcppunit-dev zlib1g-dev
git clone https://git.libreoffice.org/libcdr
cd libcdr
./autogen.sh
./configure
make && sudo make install
Then: pip install git+https://github.com/mpds-io/pylibcdr
The build steps (orchestrated automatically):
- CMake configures using
pylibcdr/CMakeLists.txt. - CMake invokes Cython to transpile
libcdr_interface.pyxintolibcdr_interface.cpp(viaadd_custom_command). - CMake compiles the generated
.cppandcore/parser.cxxinto the Python extensionlibcdr_interface(viaPython_add_library), linking againstlibcdrandlibrevenge.
If CMake fails, delete any _skbuild/ or build/ temp directories before retrying.
Usage
import sys
from pylibcdr import CDRParser
parser = CDRParser(sys.argv[1])
print(parser.xml) # raw XHTML/SVG string
print(parser.dict) # parsed as a nested dict
Architecture
| File | Role |
|---|---|
pylibcdr/__init__.py |
CDRParser class; converts XML string to dict via dictify() |
pylibcdr/libcdr_interface.pyx |
Cython bridge; calls svg(char*) from C++, raises CDRException on error strings |
pylibcdr/core/parser.cxx |
C++ core; uses libcdr/librevenge to parse CDR files, returns XHTML wrapping SVG pages |
pylibcdr/core/parser.h |
Header declaring std::string svg(char* file) |
pylibcdr/CMakeLists.txt |
CMake build: Cython transpilation + Python_add_library for the extension |
pylibcdr/cmake/ |
Custom Find*.cmake modules for libcdr and librevenge |
pyproject.toml |
Project metadata and scikit-build-core configuration |
The C++ svg() function returns an error string prefixed with "ERROR" on failure; the Cython layer detects this and raises CDRException.
The output of svg() is XHTML wrapping one or more SVG documents (one per page). CDRParser.xml exposes this raw string; CDRParser.dict parses it with xml.etree.ElementTree into a nested dict where repeated child tags become lists.
License
Inherited from the libcdr (MPL 2.0).
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
File details
Details for the file pylibcdr-0.1.1.tar.gz.
File metadata
- Download URL: pylibcdr-0.1.1.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9b964f4497477bb867c12f03d44f50b10b6f49e278c3780c891a68a38519faba
|
|
| MD5 |
1c6268043cb82c1b90309a24f6d167fc
|
|
| BLAKE2b-256 |
8fdc530ed53b44bd159f9480670b8837c31040c670e1be324e281f2dea015cee
|