Как конвертировать SVG в PDF C #? - PullRequest
0 голосов
/ 07 июня 2018

У меня была эта проблема в течение нескольких дней, и я попробовал несколько вещей.По сути, у меня есть пользователи, которые редактируют SVG, и когда они заканчивают, они сохраняют его обратно в путь к файлу на сервере.Моя проблема в том, что мой SVG содержит ссылку на файл в каталоге.Как 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);
        }
    }

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

К вашему сведению - я закончил преобразование пути изображения в Base64.Остальная часть SVG конвертирована правильно.Надеюсь, это поможет кому-нибудь в будущем.

0 голосов
/ 07 июня 2018

Лучше Вы можете попробовать с 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Конвертер: https://www.syncfusion.com/downloads/latest-version

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...