TCPDF не отображает точки (круги) с переменными пути в текстовом файле, используя imageSVG - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь визуализировать 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 прекрасно с этим справляется)

1 Ответ

0 голосов
/ 15 мая 2019

Вот решение, которое я нашел для этой проблемы;

Я перешел на использование библиотеки mPDF .

Изменение кода будет довольно значительным, но в целом будет лучше, чем при использовании TCPDF.Чтобы визуализировать SVG, я создаю всю страницу сертификации в HTML-документе, а затем пишу ее с помощью функции WriteHTML, встроенной в mPDF.

Рендерит команду пути для точек без ошибок рендеринга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...