In the deeper directories of my storage device I have some files around from the old times, when my general purpose computer was still locked partially by proprietary (operating) systems. Never-the-less e.g. Corel Draw was still worth the lock and the money, I loved that program and what it enabled me to produce.
These products are still around. And are basically binary blobs now for me, the content not readable by the software I use. Blame on that software
Well, but also the old software, i.e. Corel Draw, and its makers, using a storage format which seems not published and possibly only available by something like a Technology Partner program or similar, meaning lawyers and businessmen, not fun. But those files’ content is mine, and I completely dislike that the format binds me to a certain software.
Searching for FLOSS code that can understand files in Corel Draw’s CDR file format I discovered UniConvertor from the sK1 project and some initial code for LibreOffice, even actively developed ATM, but nothing for Karbon from the Calligra Suite.
Seeing with the hex editor Okteta (jay!) that the CDR file format is based on some RIFF and finding that one completely described on Wikipedia I somehow got tempted to try to develop a CDR import filter for Karbon, to finally free my content from those binary blobs again. And there was quickly some initial success, so I may try to stay with that combining game of decoding bytes:

At least the by-product libkoralle, a Qt-based library for parsing RIFF is useful already.
I look forward to others joining the efforts on the Karbon CDR import filter. I am mainly interested to read files of the versions 4 and 5, so people with newer versions need to make sure support for these themselves
I still also need to contact the developers of UniConvertor and libcdr (if you are one, check your email box the next days
).
You can find the current state in the branch “CDRImport” in my clone of the Calligra repo “filters-karbon-cdr” in the official Calligra repo (Updated January 28, 2012).


Someone at work still uses exlusively Corel Draw for graphics we sometimes need to interact with. Turns out the latest version (X5) exports to SVG quite well. Older versions did too but with some problems.
Comment by Yuriy — January 28, 2012 @ 3:31 am |
Converting the files with one of the latest Corel Draw program might have been the smarter way to get my content, true
But then I have no copy around, and as a software developer coding a solution seems my natural approach to this nail
Decyphering bytes is really also fun to a degree, you feel like a archaeologist
Comment by frinring — January 28, 2012 @ 1:37 pm |
Cool stuff! You don’t happen to have some Corel Painter files that you really need to read as well, do you?
Comment by Boudewijn Rempt — January 28, 2012 @ 9:49 am |
Comment by frinring — January 28, 2012 @ 1:39 pm |
Awesome stuff. I’ve really been quite impressed with how Karbon has come along and this would be yet another feather in it’s cap.
Thanks for hacking on this, I love seeing Karbon pick up cool new features like this, although like Boud, I’d love to see Corel Painter support as well. Hmm…. I wonder where I can get some itching powder… ;P
Comment by Bugsbane — January 28, 2012 @ 5:38 pm |
Can you just explain me why not to join forces and work on libcdr, since it is under a license that you people can use in calligra (lgpl 2+, gpl 2+ and mpl 1.1+), and since there is a ODG generator code under a license that you people can use (lgpl 2+) in libwpd’s git module writerperfect? Anyway, libcdr is always open to collaboration if you decide
Comment by Fridrich Strba — January 28, 2012 @ 9:59 pm |
Heya Fridrich, so you are faster in contacting

I only discovered libcdr after I had my initial success, so I stuck with my experimental code for now and did not yet switch the train
Also I am also not sure I look forward to go via an intermediate format (SVG) + intermediate streaming, directly creating the target working memory model somehow is more appealing to me when I think of runtime-resources. Then I just discovered today that I still have to go via SVG due to the Karbon sources… sure, thinking about libcdr, that is why I mentioned it
Comment by frinring — January 29, 2012 @ 2:32 am |
[...] permetterà altrettanto, integrando l’importer di Friedrich Kossebau per Karbon. Entrambi i progetti dovranno confrontarsi coi limiti di [...]
Pingback by LibreOffice includerà l’importazione delle immagini CDR da CorelDRAW | RampaCrew — February 3, 2012 @ 9:00 am |
[...] permetterà altrettanto, integrando l’importer di Friedrich Kossebau per Karbon. Entrambi i progetti dovranno confrontarsi coi limiti di [...]
Pingback by LibreOffice includerà l’importazione delle immagini CDR da CorelDRAW | Tuttolinux - novità ed articoli dal mondo del pinguino ! — February 3, 2012 @ 9:02 am |
[...] permetterà altrettanto, integrando l’importer di Friedrich Kossebau per Karbon. Entrambi i progetti dovranno confrontarsi coi limiti di [...]
Pingback by LibreOffice supporterà il formato CDR di CorelDRAW — February 3, 2012 @ 9:25 am |
[...] permetterà altrettanto, integrando l’importer di Friedrich Kossebau per Karbon. Entrambi i progetti dovranno confrontarsi coi limiti di [...]
Pingback by LibreOffice includerà l’importazione delle immagini CDR da CorelDRAW | — February 4, 2012 @ 3:31 am |
[...] permetterà altrettanto, integrando l’importer di Friedrich Kossebau per Karbon. Entrambi i progetti dovranno confrontarsi coi limiti di [...]
Pingback by LibreOffice includerà l’importazione delle immagini CDR da CorelDRAW | Indipedia – Indipendenti nella rete — February 4, 2012 @ 7:01 am |
[...] has now happened a few times since I started to try to import my old Corel Draw v4 files in Calligra. Just, one quickly gets used to what one has achieved, on the week-end I was happy to [...]
Pingback by Progress on CDRv4 import « Attracted by virtual constructs — February 20, 2012 @ 5:56 pm |