【问题标题】:Is it possible to convert fabricjs svg output to pdf without rasterizing?是否可以将fabricjs svg输出转换为pdf而不进行光栅化?
【发布时间】:2018-10-26 06:25:24
【问题描述】:

我们正在构建一个网络应用程序,用户可以在其中使用 fabric.js 进行设计,最后他应该会收到一个包含他的作品的 pdf 文件。

起初,我们尝试使用 JSPDF,因为它更喜欢拥有客户端解决方案。但是,通过执行 pdf.addImage(canvas.toDataURL(),...) 我们正在对设计进行光栅化。

其次,我们尝试了使用 WKHTMLTOPDF 的服务器端解决方案,发送 canvas.toSVG(),但字体和形状渲染存在一些问题。

设计很复杂,因为它们可以包含文本、形状、图像和 svg。

我们还尝试了 INKSCAPE (inkscape --without-gui --export-pdf ...)、MPDF 和 MUPDF,但没有得到很好的结果。 IMAGEMAGICK 不是一个解决方案,它还会对设计进行光栅化。

主要目标是获得矢量 pdf,其中可以增加大小并且可以选择设计元素,并且如果可能,该 pdf 应该可以打印(300 dpi 和 cmyk)

【问题讨论】:

  • 试试this
  • @Durga,感谢您的评论。但是,此链接中的解决方案是使用 pdf.addImage() 并且这样做会光栅化工作。
  • 在那个 pdf 文档中还是在画布上?
  • @Durga,我认为两者都是。在您的示例中,当您使用 canvas.toDataURL() 时,我们不再具有矢量性质。

标签: pdf svg fabricjs vector-graphics


【解决方案1】:

将画布导出为 svg 并使用 pdflib 制作 pdf。

你可以在这里找到一个例子:https://www.pdflib.com/pdflib-cookbook/graphics/starter-svg/

【讨论】:

  • 感谢您的回答。但是我已经开始尝试使用 tcpdf 并且我正在全力以赴。目前,重新启动一切以测试您对使用 pdflib 的建议将非常复杂。将来我会用我的最终结果更新它(如果一切顺利,则使用 tcpdf 或如果第一个失败,则使用 pdflib)。再次感谢您
  • 不确定 tcpdf 有哪些功能,但我认为 pdflib 更好。它甚至支持 icc 颜色和 cmyk。如果您考虑将来使用 pdflib,这里有一个食谱链接:pdflib.com/fileadmin/pdflib/pdf/manuals/…。在第 211 页上,您可以找到 pdflib 不支持的 SVG 功能
  • @RicardoCarvalho 你在使用 tcpdf 的平铺模式吗?
  • @Daniel,我不确定你所说的“平铺图案”是什么意思,但是我已经做了一些这样的测试:
  • jsfiddle.net/r5jtLc7h/11 你可以看到 canvas.toSVG() 工作正常,但是当我将它发送到服务器时,TCPDF 不会渲染圆圈并输出完整的图像。
【解决方案2】:

是的,它可以使用 TCPDF 库。 有关将 SVG 转换为 PDF 的更多信息,请查看此 ImageSVG api。 https://tcpdf.org/examples/example_058/

【讨论】:

    猜你喜欢
    • 2015-10-27
    • 2020-09-06
    • 2015-08-15
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多