繁体   English   中英

如何将SVG转换为PDF C#?

[英]How to convert SVG to PDF C#?

我已经有几天这个问题,并尝试过很多东西。 基本上,我让用户编辑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);
        }
    }

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

更好你可以尝试使用Syncfusion HTML到PDF库。这个对我来说效果更好。

示例代码

 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 Converter: https//www.syncfusion.com/downloads/latest-version

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM