вторник, 3 декабря 2013 г.

SVG как формат для сохранения и передачи лекал.

Для передачи заказчику созданные лекала нужно экспортировать в какой то из доступных графических форматов. Тут то и начинаются проблемы.
С приходом Qt 5 была убрана поддержка создания ps файлов. И у нашего проекта осталось только два формата на выбор: PNG и SVG.

Не зависимо от выбранного формата необходимо, что бы пользователь смог распечатать лекала в масштабе 1:1. Для этого нужно правильно выставлять разрешение при печати. Оно должно совпадать с тем что используется в программе. Сейчас это 96 dpi. Правда это больше актуально для png файлов.

Если же вы печатаете на векторном плоттере, то выбор ваш не велик. Это только svg. И тут начинаются проблемы. Кроме хаоса в поддержке стандарта, сколько программ, столько интерпретаций и нет однозначности, есть еще и проблема масштабирования, про которую я уже говорил. Разные векторные редакторы по разному считают размеры объектов.

Еще одним неприятным моментом стала двойная печать на векторном плоттере. Когда лекало с прибавкой на швы выводится на лист бумаги дважды.

Не ожидая таких проблем я был несколько разочарован. После непродолжительных поисков причины я пришел к неутешительным выводам:

  • Поддержка SVG в Qt далека от идеала и не подходит для такого рода программ.
  • Более того QtSvg объявлен устаревшим и не рекомендованным к использованию.
  • Рекомендуют только самим создавать файл.
  • Программа сама должна поддерживать печать для уменьшения влияния сторонних реализаций.
После этого я решил сделать собственную реализацию поддержки svg. Валентине не нужна поддержка всего стандарта, а только его части. Таким образом будет получен полный контроль за созданием svg файла графической сцены. Плюсом так же будет появление поддержки eps формата.

3 комментария:

  1. есть принтер...который конвертирует...из формата dwg, программы Nano Cad ,в формат Pdf, который в свою очередь можно уже распечатать на любом принтере....

    ОтветитьУдалить
  2. pdf и мы можем создавать, но пока я его не смотрел.

    ОтветитьУдалить
    Ответы
    1. ну тогда проблем распечатки в натуральную величину не должно быть...

      Удалить