Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用iTextSharp保存图像实例以在WinC窗体中保存为PDF?_C#_Winforms_Itextsharp - Fatal编程技术网

C# 如何使用iTextSharp保存图像实例以在WinC窗体中保存为PDF?

C# 如何使用iTextSharp保存图像实例以在WinC窗体中保存为PDF?,c#,winforms,itextsharp,C#,Winforms,Itextsharp,IDE:MicrosoftVisualStudio2010 站台:C 我正在尝试使用iTextSharp.text.image对象将需要以PDF格式显示的图像保存在内存流中,其中我收到一个错误,该错误表示字节数组不是可识别的图像格式 到目前为止,我一直在尝试: using (MemoryStream memoryStream = new MemoryStream()) { Document Doc = new Document(PageSize.A4, 10f, 10f, 10f, 0f

IDE:MicrosoftVisualStudio2010 站台:C

我正在尝试使用iTextSharp.text.image对象将需要以PDF格式显示的图像保存在内存流中,其中我收到一个错误,该错误表示字节数组不是可识别的图像格式

到目前为止,我一直在尝试:

using (MemoryStream memoryStream = new MemoryStream())
{
    Document Doc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
    PdfWriter.GetInstance(Doc, memoryStream);
    Doc.Open();

    chart1.SaveImage(memoryStream, ChartImageFormat.Png);
    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(memoryStream.GetBuffer());
    img.ScalePercent(75f);
    Doc.Add(img);
    Doc.Close();
    byte[] content = memoryStream.ToArray();
    using (FileStream fs = File.Create("D:\\Test2.pdf"))
    {
        fs.Write(content, 0, (int)content.Length);
    }
    System.Diagnostics.Process.Start("D:\\Test2.pdf");
}

如果将memoryStream保存到文件中,会得到什么?它是一个有效的PNG文件吗?因为iText支持PNG,所以它应该能够识别图像,除非图像已损坏或不是真正的PNG。请看,我使用的是图表控件,该控件在保存为PDF之前以PNG格式保存…这不是我问题的答案。我不知道,你能建议我现在如何继续。。。谢谢你正在处理两个专有的摘要,一个图表和一个文档,以及两个不相关的二进制文件规范,PNG和PDF。您正试图将这两个抽象的实现阻塞到内存流的同一字节数组中。一般来说,以这种方式组合两个文件几乎不起作用。相反,您需要将图表保存到一个可能在内存中的文件中,这无关紧要,但iText不应参与此过程。然后,一旦你有了一个图像并对其进行了验证,你就可以把它添加到文档中。