2010-03-16 31 views

Respuesta

96
// 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. 
byte[] bytes = System.IO.File.ReadAllBytes("myfile.pdf"); 

// 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. 
System.IO.File.WriteAllBytes("myfile.pdf", bytes); 
+0

no funciona. devuelve {byte [0]} – xscape

+0

¿Cuál es el tamaño de su archivo pdf? – jjxtra

+5

Jeff, gracias. Esta funcionando. – xscape

-3

La manera más fácil:

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); 
} 

O algo en este sentido ...

+0

Olvidó cuidar el valor de retorno del método Read. Tienes que recorrer la lectura y leer hasta que obtengas todos los datos. – Guffa

+0

@Guffa no del todo, si echas un vistazo, he usado 'stream.Length' que devuelve la longitud del flujo de archivos COMPLETO, por lo tanto, leer el archivo como un todo, no solo como un fragmento de datos. –

+2

Te estás perdiendo el punto. Incluso si solicita la secuencia completa desde el método de lectura, no tiene que leer toda la secuencia. Leerá un byte o más y devolverá la cantidad de bytes que realmente se leyeron. Si ignora el valor de retorno del método Read, solo podrá obtener parte del archivo. – Guffa

Cuestiones relacionadas