开发者

Convert Byte [] to PDF

开发者 https://www.devze.com 2022-12-23 15:48 出处:网络
With help of this question C# 4.0: Convert pdf to byte[] and vice versa i was able to convert byte[] to PDF. Byte array length is 25990 approx. When i try to open the PDF it says file is corrupted. Wh

With help of this question C# 4.0: Convert pdf to byte[] and vice versa i was able to convert byte[] to PDF. Byte array length is 25990 approx. When i try to open the PDF it says file is corrupted. What could be the reason?

I tried the BinaryWriter but it creates PDF of 0 KB.

It's a response from a Web Service

Sample Code

WebResponse resp = request.GetResponse();
var buffer = new byte[4096];
Stream responseStream = resp.GetRespo开发者_如何学JAVAnseStream();
{
  int count;
  do
  {
    count = responseStream.Read(buffer, 0, buffer.Length);
    memoryStream.Write(buffer, 0, responseStream.Read(buffer, 0, buffer.Length));
  } while (count != 0);
}
resp.Close();
byte[] memoryBuffer = memoryStream.ToArray();
System.IO.File.WriteAllBytes(@"E:\sample1.pdf", memoryBuffer);
int s = memoryBuffer.Length;

BinaryWriter binaryWriter = new BinaryWriter(File.Open(@"E:\sample2.pdf", FileMode.Create));
binaryWriter.Write(memoryBuffer);


You are reading twice from the stream but only writing one buffer. Change this:

count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, responseStream.Read(buffer, 0, buffer.Length));

To this:

count = responseStream.Read(buffer, 0, buffer.Length);
memoryStream.Write(buffer, 0, count);


It seems your missing some bytes there because you have one unnecessary read. Try this:

  do
  {
    count = responseStream.Read(buffer, 0, buffer.Length);
    memoryStream.Write(buffer, 0, count);
  } while (count != 0);
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号