TCPDF 不使用 imageSVG 在文本文件中渲染带有路径变量的点(圆圈)

我正在尝试将带有散点的 HighCharts SVG(有或没有线它产生相同的结果)渲染到 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 正确渲染路径命令来绘制点,或者我是否需要在将文件发送到 ImageSVG 之前制定一个算法来进行转换?


我目前正在研究将所有路径命令转换为圆形命令的变通方法。这看起来会起作用 - 我还没有一个可行的算法。


它似乎也让点出现在与“路径”命令相同的位置,我必须从 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 中绘制散点图,则图表输出为空 - 没有点。


如果我向散点图添加线条,它会绘制线条而不是点。(它也使用 path 命令,但 TCPDF 中的 SVG 渲染器可以很好地处理这些)


慕桂英4014372
浏览 185回答 1
1回答

守候你守候我

这是我为这个问题找到的解决方案;我转而使用mPDF库。代码更改将非常重要,但总体上比使用 TCPDF 呈现更好。为了呈现 SVG,我在 HTML 文档中创建了整个认证页面,然后使用内置于 mPDF 中的“WriteHTML”函数编写该页面。它渲染点的路径命令,没有任何渲染错误。
打开App,查看更多内容
随时随地看视频慕课网APP