【问题标题】:Embedded SVG in the PDF created using TCPDF turning grey scale使用 TCPDF 转换灰度创建的 PDF 中的嵌入 SVG
【发布时间】:2019-12-18 09:41:00
【问题描述】:

我正在使用 TCPDF 创建 PDF 文件。但是,我拥有并希望在此 PDF 中使用的一些 SVG 文件在输出中变为灰色/黑色。如果我在浏览器或 Adob​​e Illustrator 中打开这些 SVG 文件,它看起来是正确的。

我用来创建 PDF 的代码:

require_once('tcpdf_include.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);

$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);



// set some language-dependent strings (optional)
if (@file_exists(dirname(__FILE__).'/lang/eng.php')) {
    require_once(dirname(__FILE__).'/lang/eng.php');
    $pdf->setLanguageArray($l);
}

$pdf->SetFont('helvetica', '', 10);
$pdf->AddPage();

$pdf->ImageSVG($file='images/star.svg', $x=5, $y=5, $w='200', $h=200, $link='', $align='', $palign='', $border=0, $fitonpage=false);
$pdf->Output('example_012.pdf', 'I');

但是,另一个 SVG 工作得非常好。我已附上 SVG 文件和 PDF 附件。

不适用于 PDF 的 SVG:https://www.dropbox.com/s/2kbj2200cw4hhrm/star.svg?dl=0

输出 PDF: https://www.dropbox.com/s/nn8pfpdmzx66a50/mypdf-star.pdf?dl=0

在 PDF 中正常工作的 SVG https://www.dropbox.com/s/fsr6f763n39wflt/tux.svg?dl=0

输出 PDF: https://www.dropbox.com/s/5hs4jo3dz3knyod/mypdf-tux.pdf?dl=0

【问题讨论】:

  • 您可以将图片包含在帖子中,以便将其全部包含在此处。
  • 怎么也被标记为fabricjs?
  • @Felix 我已将它们作为 Dropbox 链接包含在内。
  • @AndreaBogazzi 我刚刚删除了 Fabricjs 标签。
  • @tanayjha 是的,这就是我所指的。当您从 Dropbox 中删除它们时会怎样?

标签: php svg tcpdf


【解决方案1】:

TCPDF 不支持的几个 SVG 功能之一是通过类名设置样式特征。例如,您的星形 SVG 的填充颜色将不会被使用,因为它们是使用类设置的。

对于这种特殊情况,使用内联样式或演示属性从 Illustrator 导出,它应该可以工作。

[编辑:作为附录,SVG 有多种方法可以破坏 TCPDF。一般来说,越简单越好。 TCPDF 的 SVG 解析器功能相当强大,但远未完成,因此预计会出现一些问题,这就是为什么可以使用 ImageMagick 进行光栅化选项的原因。]

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 1970-01-01
    • 2013-04-13
    • 2016-10-05
    • 2020-12-02
    相关资源
    最近更新 更多