【问题标题】:How to convert SVG to PDF C#?如何将 SVG 转换为 PDF C#?
【发布时间】:2018-06-07 13:35:08
【问题描述】:

我已经遇到这个问题几天了,并尝试了很多方法。本质上,我让用户编辑 SVG,一旦他们完成,他们会将其保存回服务器上的文件路径。我的问题是我的 SVG 包含目录中文件的 href。作为 SVG,它可以毫无问题地引用文件,但是当我将文件转换为 PDF 时,它没有图像,但它确实有其他 SVG 元素,例如线条和文本。有没有人遇到过这个问题或知道如何解决?我正在使用 ImageMagick 进行转换,但它仍然存在这个问题。我的控制器代码见下文:

    [HttpPost]
    public void ConvertToPDF(string[] svgs, string pdfFilePath, List<string> files)
    {
        MagickReadSettings settings = new MagickReadSettings();
        using (MagickImageCollection images = new MagickImageCollection())
        {
            foreach(var s in svgs)
            {
                var fileName = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["ConvertFromXMLToSvgTempPath"] + s + ".svg");

                //images.Read(fileName, settings);
                //var readSettings = new MagickReadSettings() { Format = MagickFormat.Svg };

                using (var image = new MagickImage(fileName))
                {
                    image.Format = MagickFormat.Pdf;
                }
            }
            images.Write(pdfFilePath);
        }
    }

【问题讨论】:

标签: c# pdf svg model-view-controller imagemagick


【解决方案1】:

仅供参考 - 我最终将图像路径转换为 ​​Base64。 SVG 的其余部分正确转换。希望这对将来的任何人都有帮助。

【讨论】:

    【解决方案2】:

    更好你可以试试Syncfusion HTML to PDF library。这个对我来说效果更好。

    示例代码

     HtmlToPdfConverter htmlConverter = new HtmlToPdfConverter(HtmlRenderingEngine.WebKit);
        WebKitConverterSettings settings = new WebKitConverterSettings();
    
        // WebKit library path
        settings.WebKitPath = @"../../QtBinaries/";
    
        //Assign WebKit settings to HTML converter
        htmlConverter.ConverterSettings = settings;
    
        //Convert a SVG file to PDF with HTML converter
        PdfDocument document = htmlConverter.Convert(@"../../Sample.svg");
    
    
        document.Save("Output.pdf");
    
        document.Close(true);   
    

    下载 webkit 库 WebKit HTML 转换器:https://www.syncfusion.com/downloads/latest-version

    【讨论】:

    • 这对我不起作用,因为我还需要 SVG 中的图像进行转换。不仅仅是 SVG 本身。
    猜你喜欢
    • 2013-06-29
    • 2011-05-06
    • 2016-05-23
    • 2020-06-28
    • 2016-01-20
    • 2015-10-04
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多