В рамках проекту LibreOffice розпочато розробку бібліотеки на C ++ для читання файлів Corel DRAW. У потилицю їм дихає розробник Calligra Suite з власної реалізацією підтримки CDR.
Чого вже там приховувати: за майже п'ять років існування проекту UniConvertor прогрес щодо файлів Corel DRAW більш ніж скромний. UC так і не пішов сильно далі підтримки сторінок, кривих Безьє, заливок і обводок. Які б на то у команди не були причини, принципових поліпшень давно не видно, втім, так само як і самої розробки.
У минулому році щиро ваша команда re-lab встигла ще трохи вивчити формат CDR, поки переносила його парсер в OLE Toy - раніше створену нами програму для дослідження довічних форматів.
Активна робота над проектом почалася лише минулого тижня, але буквально вчора Фрідріх випустив першу версію бібліотеки з мінімальною підтримкою файлів CDR.
Що в бібліотеці
За структурою і складом бібліотека libcdr дуже схожа на libvisio: в ній є парсер і пробний конвертер в SVG, який зберігає малюнки SVG всередину документа XHTML. Якщо він знаходить в CDR кілька сторінок, кожна з них зберігається всередині XHTML як новий вбудований малюнок SVG.
Крім того, якщо пересобрать LibreOffice з підтримкою libcdr, файли Corel DRAW будуть відкриватися в ньому безпосередньо. Словом, ніяких відмінностей від libvisio.
що підтримується
На поточний момент бібліотека Новомосковскет тільки файли v7-X3 і конвертує основні об'єкти: контури, прямокутники, еліпси, сектори, дуги. Частково підтримується кольорова заливка, є мінімальна підтримка обведення. Забороть багатокутники поки не вдалося, але ми працюємо над цим.
Давайте відразу домовимося, що як і у випадку з Visio підтримувати абсолютно всі можливості формату не вийде. Наприклад, ні в OpenDocument, ні в SVG немає роздільного заокруглення кутів прямокутника.
Тому cdr2xhtml чесно конвертує такі фігури в криві Безьє.
Погодьтеся, що для використання клипарта і старих напрацювань в режимі «як є» цього більш ніж достатньо.
Окреме питання - як бути з CMYK і плашечними квітами. Взагалі кажучи, OpenDocument трохи знає про CMYK: при роботі з векторними графічними об'єктами в LibreOffice їх заливку можна задати і в цій колірній моделі. Але на текст, наприклад, це вже не поширюється. Тут виникають різні варіанти, що робити з такими квітами; рішення поки не прийнято.
Що стосується SVG, в ньому CMYK підтримується через icc-color, і це цілком прийнятно, оскільки Corel DRAW працює приблизно так само і навіть зберігає колірні профілі прямо в CDR. Більше того, в SVG2 планується підтримка некаліброваних пристроїв виведення, так що можна буде забивати значення CMYK без прив'язки до колірні.
Іншими словами, libcdr потрібно просто вміти віддавати кольору як є або, за вибором клієнтського додатка, конвертувати їх в RGB.
Фрідріх планує додатково попіарити проект на конференції FOSDEM, яка пройде на цих вихідних в Брюсселі, і в будь-якому випадку продовжить писати код. Щиро ваша команда re-lab зі свого боку буде і далі допомагати LibreOffice з реверс-інжиніринг ..
Де взяти, як зібрати і використовувати
Процедура абсолютно та ж, що і для libvisio. Подробиці можна дізнатися з кінця статті про Visio / LibreOffice. Короткий варіант додається.
Забираємо код з Git:
$ Git clone git: //anongit.freedesktop.org/libreoffice/libcdr
$ ./autogen.sh ./configure make sudo make install
$ Cdr2xhtml file.cdr> file.xhtml
Як завжди, чекайте новин.
Стоп, а що з Calligra Suite?
О так. Фрідріх Коссебау з команди Calligra Suite почав працювати над власним імпортіровщіком CDR для Karbon. Він подивився на libcdr, але вирішив створити парсер RIFF для Qt, і вже на його основі написати імпортіровщік CDR.
Цікаво, що в кращих традиціях аматорської палеонтології Фрідріх №2 збирається сконцентрувати увагу на четвертій і п'ятій версіях формату. Як бачите, імпорт контурів у нього працює. Бібліотека libkoralle. яка і виконує розбір файлів RIFF, теж публічно доступна.
Три проекти для підтримки одного формату - це якось забагато. Але давайте все-таки подивимося, що з цього вийде.
SVG Cleaner став швидше і навчився видаляти елементи MS Visio
Що гальмує забезпечення підтримки DWG в вільних САПР?