【问题标题】:how to add SVG graphic to pdf document using iText 7 in c#?如何在 c# 中使用 iText 7 将 SVG 图形添加到 pdf 文档?
【发布时间】:2019-01-11 14:16:56
【问题描述】:

我正在使用 iText7 C# 制作贴纸生成器。 最终贴纸的外观是这样的: https://drive.google.com/open?id=16q_sMP5H0eiVhq85DDRGgE-CDlX3fOB5

我在将 SVG 图形添加到 pdf 文档时遇到问题。我在上面的链接中有图形: https://drive.google.com/open?id=1bw2E5hVhKjjwYqn6aGbe_tNqPmYmXu4b https://drive.google.com/open?id=1lEqhrh2zAlOGlA1WMKfGtuhue6TBtcbc

我在互联网上找不到任何如何使用 iText7 读取 SVG 文件并添加到 pdf 文档的实际示例。

谁能帮我解决这个问题?

【问题讨论】:

  • SVG 是 XML。图像将是 Base 64 位字符串。因此,您需要解析 xml 并将 Base 64 字符串转换为 byte[],然后再转换为位图。图片也可以是 URL 链接,您可能需要从链接中获取图片。

标签: c# pdf svg itext7


【解决方案1】:

使用最新版本 7.1.4,您可以像这样将 SVG 添加到文档中:

public static void Convert(Stream svg, Stream pdfOutputStream) {
        SvgConverter.CreatePdf(svg, pdfOutputStream);
}

在这个类中还有很多其他的可能性可以转换为 PDF,但这是最简单的方法。

【讨论】:

    【解决方案2】:

    我使用此代码将 SVG 图形添加到 pdf 文档:

    string enc_text = File.ReadAllText(SVG);                            
    

    SvgConverter.DrawOnCanvas(enc_text, pdfCanvas);

    但它仅适用于像下面这样的简单 SVG 图形 https://www.w3schools.com/graphics/tryit.asp?filename=trysvg_ellipse3

    不适用于在 CorelDraw 中创建和保存的 SVG: https://drive.google.com/file/d/1bw2E5hVhKjjwYqn6aGbe_tNqPmYmXu4b/view 是否可以使用 itext7 C# 在 pdf 上绘制此图形?

    【讨论】:

    • 不尝试转换那个:看起来应该支持它......你使用的是哪个版本?你升级到最新版本了吗?它会抛出异常还是记录警告?
    • 感谢您的回复。我使用最新版本 7.1.4。文本。没有异常和警告
    【解决方案3】:

    这是代码:

    public const String SVG = @"C:\Users\Desktop\logo.svg";
    

    ....

    string enc_text = File.ReadAllText(SVG);                            
    SvgConverter.DrawOnCanvas(enc_text, pdfCanvas);
    

    我试了三遍,结果如下:

    尝试 1 SVG https://drive.google.com/open?id=1ibg_KwvviRQ4b9suniZwBJRdBdgM02te PDF - 结果是:好的: https://drive.google.com/open?id=1DGGLUowlEYpAydbWTTSJORVxP67LGrf5

    尝试 2 SVG: https://drive.google.com/open?id=1UHASgAxAaPONIo9fc6VZ9q4cjjK-uOzj PDF - 结果是:一半好 https://drive.google.com/open?id=1yzLF-fQQcOQvEXVyDN-UuK0YVeHOn5B_

    尝试 3 SVG https://drive.google.com/open?id=1ZNLDkc2x4WvHouKw-A4AgRrDuQ2pAoDE PDF - 结果是:没有徽标 https://drive.google.com/open?id=1nJVNT5oAMoI8HuUURZQv1yhu7IbFoI6H

    SVG图形在浏览器中显示效果很好,但iText无法正常绘制,尤其是那些复杂的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-26
      • 2017-12-19
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多