ABCPdf 将 Svg 流转换为 PDF

ABCPdf Convert Svg Stream to PDF

我想在 C# 中使用 ABCPdf 将 Svg 流转换为 Pdf。我收到的流包含 Svg 的 XML。 我正在使用 ABCPdf 提供的 Doc.AddImageHtml 方法。因为我只从流中得到 XML,所以我在 html 和 body 标签前添加前缀和后缀,使其成为 HTML。 我为此使用以下代码:

Doc abcPdfDoc = new Doc();                                
XmlDocument xDocument = new XmlDocument();
xDocument.Load(stream);
abcPdfDoc.AddImageHtml("<html><body>" + xDocument.InnerXml + "</html></body>");
abcPdfDoc.Save(@"MyPdf.pdf");
abcPdfDoc.Clear();   

问题是我的 SVG 中的表格没有保留。我的 PDF 中的输出是 运行 没有表格的文本。(具体为矩形)

关于如何保留格式或使用 ABCPdf 实现相同格式的更好方法的任何指示?

您不需要使用 AddImageHtml。假设您正在使用基于 SVG Tiny 规范的相当标准的 SVG,您可以直接 Doc.Read SVG。这是快速、简单和高效的,并且适用于大多数 SVG 文档。

如果您的 SVG 更复杂,那么您可能希望使用 Gecko 引擎。为此,您可以将 AddImageHtml 与 SVG 一起使用,将 Doc.HtmlOptions.Engine 属性 设置为 EngineType.Gecko。 Gecko 引擎涉及更大的开销,但提供了 SVG 规范的完整功能覆盖。