【问题标题】:Foreignobject from SVG is not converted and appear in PDF by TCPDF来自 SVG 的外来对象未被转换并由 TCPDF 以 PDF 格式显示
【发布时间】:2017-04-08 12:22:59
【问题描述】:

我正在使用 TCPDF php 库将我的 svg 转换为 pdf。我的 svg 有带有 body、div 和 span 的 foreignObject,用于在文本中显示一些 cmets。 当我在浏览器中打开该 SVG 时,它看起来不错,但是当我使用 TCPDF 将其转换为 PDF 时,我得到了空白空间,我的文本也应该出现在灰色背景中。

【问题讨论】:

标签: php pdf d3.js svg tcpdf


【解决方案1】:

如果您在 SVG 中使用 <foreignObject>,那么您将需要一个转换器,它不仅可以渲染 SVG,还可以渲染 HTML。也许有人销售支持 HTML 的 SVG 转换器,但我不知道。

SVG 标准提供了<foreignObject> 元素,以便用户可以在 SVG 中嵌入非 SVG 内容。 SVG 标准不要求 SVG 渲染支持可能放置在 foreignObject 中的任何特定类型的内容。

浏览器在 foreignObject 中支持 HTML 的事实显然纯粹是因为它们是 HTML 查看器。

除了避免使用 foreignObject 之外,没有明确和明显的解决方法。

如果您不在乎 SVG 内容在转换为 PDF 时保留为矢量,那么您可以使用 phantomjs 之类的东西将 SVG 转换为位图。然后将该位图转换为 PDF。不过,这不是一个很好的解决方案。

【讨论】:

  • 我在 Brower 中没有遇到任何问题,它与浏览器的工作正常。但是当我在 TCPDF 中使用该 SVG 时,foreignObject 元素不会出现。是的,我需要 SVG 保持矢量形式。我正在使用 $pdf->ImageSVG($file='images/tux.svg', $x=30, $y=100, $w='', $h=100, $link='', $align= '', $palign='', $border=0, $fitonpage=false);用于从 TCPDF 在 PDF 中添加 svg
  • 祝你好运找到支持 HTML 的 SVG 到 PDF 转换器。您可能必须认真考虑更改 SVG,以免它们使用 <foreignObject>
  • @PaulLeBeau 请看看“draw.io”是如何工作的。他们肯定在 svg 中使用 foreignObject 来显示文本。然后使用一些服务器端转换器将此 svg 转换为 pdf。他们使用什么转换器??
  • @krispo 在我看来,draw.io 有它自己的内部基于 XML 的文件格式。它有 SVG 和 PDF 的导出器。但它似乎并不直接从 SVG 转换为 PDF。
猜你喜欢
  • 2018-03-20
  • 2015-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
  • 2014-06-26
相关资源
最近更新 更多