Навигация
Главная »  Linux 

У поддержки файлов Corel DRAW в СПО появился новый шанс


Источник: linuxgraphics
linuxgraphics
В рамках проекта LibreOffice начата разработка библиотеки на C++ для чтения файлов Corel DRAW. В затылок им дышит разработчик Calligra Suite с собственной реализацией поддержки CDR. Чего уж там скрывать: за почти пять лет существования проекта UniConvertor прогресс в отношении файлов Corel DRAW более чем скромен. UC так и не ушёл сильно дальше поддержки страниц, кривых Безье, заливок и обводок. Какие бы на то у команды ни были причины, принципиальных улучшений давно не видно, впрочем, равно как и самой разработки.

В прошлом году искренне ваша команда re-lab успела ещё немного изучить формат CDR, пока переносила его парсер в OLE Toy - ранее созданную нами программу для исследования двоичных форматов.

Полученную новую информацию, к сожалению, пристроить к делу было некуда. Нельзя сказать, чтобы нас это очень вдохновляло на новые трудовые подвиги. К счастью, уже знакомый вам Фридрих Штрба из команды LibreOffice пришёл на помощь и в конце ноября написал первый код парсера файлов CDR.

Активная работа над проектом началась лишь на прошлой неделе, но буквально вчера Фридрих выпустил первую версию библиотеки с минимальной поддержкой файлов CDR.

Что в библиотеке По структуре и составу библиотека libcdr очень похожа на libvisio: в ней есть парсер и пробный конвертер в SVG, который сохраняет рисунки SVG внутрь документа XHTML. Если он находит в CDR несколько страниц, каждая из них сохраняется внутри XHTML как новый встроенный рисунок SVG.

Кроме того, если пересобрать LibreOffice с поддержкой libcdr, файлы Corel DRAW будут открываться в нём напрямую. Словом, никаких отличий от libvisio.

Что поддерживается На текущий момент библиотека читает только файлы v7-X3 и конвертирует основные объекты: контуры, прямоугольники, эллипсы, секторы, дуги. Частично поддерживается цветная заливка, есть минимальная поддержка обводки. Забороть многоугольники пока не удалось, но мы работаем над этим.

Некоторые ошибки вроде чтения размера страницы и ориентации прямоугольников были исправлены сразу после выпуска версии 0.0.1. В связи с этим всем, кто интересуюется проектом, советуем тестировать только код из Git и почаще обновлять локальную копию репозитория.

Сложности Давайте сразу договоримся, что как и в случае с 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

Используем любимый текстовый редактор для извлечения встроенного документа SVG в отдельный файл, открываем файл в Inkscape.

Как обычно, ждите новостей.

Стоп, а что с Calligra Suite? О, да. Фридрих Коссебау из команды Calligra Suite начал работать над собственным импортировщиком CDR для Karbon. Он посмотрел на libcdr, но решил создать парсер RIFF для Qt, и уже на его основе написать импортировщик CDR.

Любопытно, что в лучших традициях любительской палеонтологии Фридрих №2 собирается сконцентрировать внимание на четвёртой и пятой версиях формата. Как видите, импорт контуров у него работает. Библиотека libkoralle, которая и выполняет разбор файлов RIFF, тоже публично доступна.

Три проекта для поддержки одного формата - это как-то многовато. Но давайте всё-таки посмотрим, что из этого выйдет.



 

 Изучаем Linux, 101: Потоки, программные каналы и перенаправления.
 Symantec и Red Hat расширяют сотрудничество.
 Oracle представляет модульную ленточную библиотеку StorageTek SL150.
 Вышло ядро Linux 3.5.
 Lisp: Слезы радости, часть 2.


Главная »  Linux 

© 2022 Team.Furia.Ru.
Частичное копирование материалов разрешено.