我正在尝试将HighCharts SVG带有散点点(有或不带有线路的结果是相同的结果(。输出将使用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正确地渲染路径命令绘制点命令,或者我需要制作算法才能进行转换,然后再将文件发送到ImpassVG?
我目前正在处理一个工作,将所有路径命令转换为圆命令。看起来它会起作用 - 我还没有为此工作的算法。
它似乎也使点出现在与"路径"命令相同的位置,我必须从x坐标中减去4。
我已经搜索过搜索,看看是否有人遇到了这个问题,搜索了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);
HighCharts SVG太大而无法粘贴,所以这是相关部分:
<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中进行散点图,则图表输出为空 - 没有点。
如果我在散点图中添加线条,则绘制线路,但没有绘制点。(也使用路径命令,但是TCPDF中的SVG渲染器可以处理这些命令(
这是我为此问题找到的解决方案;
我切换到使用MPDF库。
代码更改将非常重要,但总体上比使用TCPDF更好。要渲染SVG,我在HTML文档中创建整个认证页面,然后使用MPDF中内置的" WriteHTML"函数编写。
它呈现dot的路径命令,没有任何渲染错误。