如何使用PdfSharp将.SVG写入pdf

时间:2017-11-21 19:29:10

标签: c# svg pdfsharp

我正在使用PdfSharp并保存.png文件。它工作正常。现在我需要保存SVG图像,我收到错误

var path = @"D:\Projects\ProjectName\Content\Images\Instruments";
path += Path.GetFileName(instrument.Src); //instrument.src is a valid name and the path is a valid path on the local machine, which is where I'm testing

if (!File.Exists(path))
    return;  //never hit as the path is correct

var img = XImage.FromFile(path); //out of memory
//more code

代码是

(?<!\d)\d{2}(?!\d)

如果我将上述内容从.svg更改为.png,则可以正常工作(因为我同时拥有同名的.png和.svg文件)

如何使用PDF Sharp将SVG图像保存为PDF?

2 个答案:

答案 0 :(得分:6)

PDFsharp支持PNG和JPEG等光栅图像。尚不支持SVG等矢量图像。这不是错误,这是一个实施限制。

XImage.FromFile将图像传递给GDI +或WPF(取决于您正在使用的构建版本),并期望获得光栅图像作为回报。我不知道GDI +或WPF返回的SVG图像是什么。

如果您找到使用Graphics对象绘制SVG图像的源代码,那么您可以轻松地将其用于PDFsharp的XGraphics对象。

或尝试找到将SVG转换为光栅图像的库。

答案 1 :(得分:0)

您可以执行以下操作:

  • 第1步:在Inkscape中打开矢量图像
  • 第2步:将Inkscape中的图像另存为pdf文件
  • 第3步:像这样将新的pdf文件导入您的pdf文档中:
using (var doc = new PdfSharp.Pdf.PdfDocument())
{
    var page = doc.AddPage();
    using (var gr = PdfSharp.Drawing.XGraphics.FromPdfPage(page, PdfSharp.Drawing.XGraphicsPdfPageOptions.Append))
    {
        using (var imgForm = PdfSharp.Drawing.XPdfForm.FromFile("fileWithVectorImage.pdf"))
        {
            gr.DrawImage(imgForm, new PdfSharp.Drawing.XPoint(10, 10));
        }

        //other pdf stuff with gr.DrawString etc.
    }
    doc.Save("resultPdfFile.pdf");
}