将带有样式的 SVG 转换为 PDF



将SVG转换为PDF时难以保留样式。我正在使用 cloudFormatter.com 的cssToPdf。

但是

我需要使用样式混合-混合-模式:乘法;但是当我创建pdf时,它没有保留。

我尝试在 svg 元素上使用内联样式,也可以通过将样式放入 HTML 头并使用外部样式.css文件。但在每种情况下,我都没有得到"多重效应"。

如何让 pdf 生成识别 SVG 元素的样式?

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>csstopdf</title>
    <link rel="stylesheet" href="style.css">
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <!-- <style>
      circle {
        mix-blend-mode: multiply;
      }
    </style> -->
  </head>
  <body>
    <div>
      <svg id="svgCircles" version="1.1" xmlns="http://www.w3.org/2000/svg" width="300" height="300" x="0" y="0" viewBox="0 0 150 150">
        <!-- <circle cx="50" cy="50" r="40" stroke-width="4" fill="green" style="mix-blend-mode: multiply;"/>
        <circle cx="75" cy="75" r="40" stroke-width="4" fill="red" style="mix-blend-mode: multiply;"/>
        <circle cx="100" cy="50" r="40" stroke-width="4" fill="blue" style="mix-blend-mode: multiply;"/> -->
        <circle cx="50" cy="50" r="40" stroke-width="4" fill="green" />
        <circle cx="75" cy="75" r="40" stroke-width="4" fill="red" />
        <circle cx="100" cy="50" r="40" stroke-width="4" fill="blue" />
      </svg>
    </div>
    <div class="btn-group" onclick="xepOnline.Formatter.Format('svgCircles');" role="group" aria-label="...">
      <button type="button" class="btn btn-warning">Generate svgCircles!</button>
    </div>
     <script src="xepOnline.jqPlugin.js"></script>
  </body>
</html>

xepOnline.jqPlugin.js 文件太大,无法在此处包含。但它可以在 http://www.cloudformatter.com/Resources/Pages/CSS2Pdf/Script/xepOnline.jqPlugin.js 找到或从 cloudformatter.com 下载

样式.css文件,

circle {
  mix-blend-mode: multiply;
}

gh-pages上有一个工作示例

回购处于 https://github.com/shanegibney/csstopdf

任何这方面的帮助将不胜感激,

谢谢

我将添加此答案,因为我是此应用程序的作者之一。

@cloudformatter css2pdf应用程序基于RenderX的XEP引擎。他们对 SVG 转换的支持详见此处:

RenderX 的 SVG 支持

如果您想要的内容不在该列表中,则当前不支持它。

从本质上讲,@cloudformatter获取包含SVG的HTML + CSS(如果有的话(并发送到远程服务器。该服务器执行一些清理操作,并将内容转换为格式引擎的 XSL FO。使用的格式化引擎是RenderX XEP。因此,它正在执行从内容到输出的所有格式化(PDF,Postscript,AFP,XPS等(。底层引擎支持的内容就是支持的内容。

在您的情况下,似乎不支持混合混合模式。

相关内容

  • 没有找到相关文章

最新更新