Наконечники стрел Рафаэля не отображаются в pdf

Я создаю диаграмму, используя raphael.js. На моей диаграмме есть прямоугольники, которые соединены стрелками. Я экспортирую этот svg, используя Raphael Export, а затем конвертирую эту строку svg в pdf с помощью батика. Но в pdf я не вижу стрелок на соединителях, соединяющих различные прямоугольники в pdf. Я использую raphael graffle для создания связи между прямоугольниками. Мне очень нужны эти стрелки в pdf. Пожалуйста, дайте мне знать, в чем может быть проблема.

Кроме того, статическое добавление тега defs и замена атрибута стрелки маркером-конечным URL-адресом путем манипулирования строкой svg не выглядит хорошим решением. Есть ли другой способ сделать это?


person Nikhil Mahajan    schedule 23.05.2013    source источник
comment
может показать код DEMO в jsfiddle?   -  person Brian    schedule 01.06.2013
comment
Извините за поздний ответ. Вот ссылка на скрипку. jsfiddle.net/nHEsE/10 . Я забыл упомянуть, что метод подключения к граффлу был изменен, чтобы показывать стрелки. Я нашел модификацию на самом stackoverflow.   -  person Nikhil Mahajan    schedule 14.06.2013


Ответы (1)


Я думаю, что нашел проблему. Похоже, проблема связана с тегом defs (который содержит идентификаторы маркеров) raphael, который не включен в экспортируемый svg, а также атрибут marker-end-url отсутствует в элементах пути, из-за чего стрелки не отображаются. В элементах пути rapahel при экспорте вместо идентификатора маркера добавляется еще один атрибут "стрелка-конец": "classic-midium-midium". Поэтому, когда я добавил тег defs raphael в свой сгенерированный svg и заменил атрибут arrow-end атрибутом marker-end-url, указав требуемое значение, появились стрелки. Но теперь проблема с расположением наконечников стрелок. В экспортированном svg координаты x и y горизонтальной и вертикальной стрелок немного больше, что приводит к пересечению стрелок с объектом (прямоугольниками в моем случае), что выглядит не очень хорошо. Но да, пока я собираюсь с этим. Я изменил raphael.export.js. Поэтому для любого, кто ищет решение, необходимо добавить следующие 2 строки кода в raphael.export.js.

1. В функции R.fn.toSVG после инициализации переменной svg в строке номер 217 добавьте следующее You have to append defs tag of raphael to svg variable here. Not able to post here.

2. В переменной сериализатора, где создается тег для пути, добавьте следующую строку с номером строки 199 initial['marker-end'] = "url(#raphael-marker-endclassic33)";

Спасибо

person Nikhil Mahajan    schedule 28.06.2013