用于iTextSharp Image.GetInstance的EMF格式的内存流

时间:2015-07-14 17:59:16

标签: c# itextsharp itext

我正在使用iTextSharp将我网站上的图像流式传输到PDF文档中。具体来说,我使用Image.GetInstance(stream)方法,在下面的代码片段中加粗。此方法接受PNG内存流并将其添加到PDF文档而不会出现错误,但似乎不接受EMF内存流。当我使用EMF内存流执行下面的代码时,我得到以下异常:"字节数组不是可识别的图像格式。"

这是我的C#代码:

using iTextSharp.text;
using iTextSharp.text.pdf;
using IMG = iTextSharp.text.Image;

...

ImageType imgType = ImageType.EMF; //ImageType.PNG; 
using (System.IO.MemoryStream ms = gm.CreateImageStream(null, imgType))
    {
        ms.Position = 0;
        IMG emf = IMG.GetInstance(ms);
        doc1.Add(emf);
    }

我是否需要以某种方式修改内存流才能成功通过GetInstance方法获取EMF格式的流?

谢谢。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并用这段代码解决了。

var stream = imagePart.GetStream();

var image = Image.GetInstance(System.Drawing.Image.FromStream(stream),

System.Drawing.Imaging.ImageFormat.Png);

image.ScalePercent(45);