Я пытаюсь визуализировать SVG HighCharts с точками разброса (с линией или без нее, которая дает одинаковые результаты) в файл PDF. Вывод нарисует линии с помощью ImageSVG (), но не отображает точки.
Я провел ручное редактирование файла SVG и обнаружил, что ImageSVG действует так, как будто ему не нравится эта команда рендеринга:
<path fill="darkblue" d="M99 188a4 4 0 1 1 0-.004z" class="highcharts-point highcharts-negative highcharts-color-0"/>
Я преобразовал его в команду рендеринга круга:
<circle cx="95" cy="188" r="4" fill="darkblue" />
И он хорошо отображает в TCPDF.
Есть ли способ заставить ImageSVG правильно отображать команду path для рисования точки, или мне нужно создать алгоритм для преобразования перед отправкой файла в ImageSVG?
В настоящее время я работаю над обходным путем, чтобы преобразовать все команды пути в команды окружности. Похоже, что это будет работать - у меня пока нет рабочего алгоритма для этого.
Также кажется, что точка появляется в том же месте, что и команда "path", мне нужно вычесть 4 из координаты X.
Я гуглил, чтобы узнать, сталкивался ли кто-нибудь еще с этой проблемой, и искал stackoverflow, но ничего не смог найти. Я также искал алгоритмы, чтобы помочь с преобразованием, но нашел только людей, желающих преобразовать другой путь - из круга в путь.
Общий код для рендеринга SVG в PDF-файл.
pdf->ImageSVG($file='plot.svg', $x=15, $y=30, $w='', $h='', $link='http://www.tcpdf.org', $align='', $palign='', $border=1, $fitonpage=false);
svg highcharts слишком велик для вставки, поэтому вот соответствующий раздел:
<g class="highcharts-series-group" data-z-index="3">
<g data-z-index=".1" class="highcharts-markers highcharts-series-0 highcharts-scatter-series highcharts-color-0">
<path fill="powderblue" d="M98 188a4 4 0 1 1 0-.004zM99 188a4 4 0 1 1 0-.004zM101 183a4 4 0 1 1 0-.004zM108 188a4 4 0 1 1 0-.004zM122 185a4 4 0 1 1 0-.004zM150 190a4 4 0 1 1 0-.004zM206 179a4 4 0 1 1 0-.004zM315 182a4 4 0 1 1 0-.004zM572 188a4 4 0 1 1 0-.004z" class="highcharts-point highcharts-negative highcharts-color-0"/>
</g>
</g>
Если я просто делаю точечную диаграмму в Highcharts, вывод диаграммы пустой - точек нет.
Если я добавлю линии на диаграмму рассеяния, она будет рисовать линии, но не точки. (Который также использует команду пути, но визуализатор SVG в TCPDF прекрасно с этим справляется)