C# 4.0: Convert pdf to byte[] and vice versa
// loading bytes from a file is very easy in C#. The built in System.IO.File.ReadAll* methods take care of making sure every byte is read properly.// note that for Linux, you will not need the c: part// just swap out the example folder here with your actual full file pathstring pdfFilePath = "c:/pdfdocuments/myfile.pdf";byte[] bytes = System.IO.File.ReadAllBytes(pdfFilePath);// munge bytes with whatever pdf software you want, i.e. http://sourceforge.net/projects/itextsharp/// bytes = MungePdfBytes(bytes); // MungePdfBytes is your custom method to change the PDF data// ...// make sure to cleanup after yourself// and save back - System.IO.File.WriteAll* makes sure all bytes are written properly - this will overwrite the file, if you don't want that, change the path here to something elseSystem.IO.File.WriteAllBytes(pdfFilePath, bytes);
using (FileStream fs = new FileStream("sample.pdf", FileMode.Open, FileAccess.Read)) { byte[] bytes = new byte[fs.Length]; int numBytesToRead = (int)fs.Length; int numBytesRead = 0; while (numBytesToRead > 0) { // Read may return anything from 0 to numBytesToRead. int n = fs.Read(bytes, numBytesRead, numBytesToRead); // Break when the end of the file is reached. if (n == 0) { break; } numBytesRead += n; numBytesToRead -= n; } numBytesToRead = bytes.Length;}
Easiest way:
byte[] buffer;using (Stream stream = new IO.FileStream("file.pdf")){ buffer = new byte[stream.Length - 1]; stream.Read(buffer, 0, buffer.Length);}using (Stream stream = new IO.FileStream("newFile.pdf")){ stream.Write(buffer, 0, buffer.Length);}
Or something along these lines...