将PDF读入字符串或byte []并将该字符串/ byte []写回磁盘

时间:2012-12-07 21:19:31

标签: c# file pdf

我在我的应用中遇到问题,它从磁盘读取PDF,然后必须稍后将其写回到其他位置。

发出的文件不再是有效的PDF。

以非常简化的形式,我尝试使用

进行读/写
var bytes = File.ReadAllBytes(@"c:\myfile.pdf");
File.WriteAllBytes(@"c:\output.pdf", bytes);

var input = new StreamReader(@"c:\myfile.pdf").ReadToEnd();
File.WriteAllText("c:\output.pdf", input);

...并且指定了上述的100种排列,并且指定了各种编码。没有输出文件是有效的PDF文件。

有人可以伸出援助之手吗?非常感谢!!

2 个答案:

答案 0 :(得分:3)

在C#/。Net 4.0中:

using (var i = new FileStream(@"input.pdf", FileMode.Open, FileAccess.Read))
   using (var o = File.Create(@"output.pdf"))
      i.CopyTo(o);

如果您坚持首先使用byte[]

using (var i = new FileStream(@"input.pdf", FileMode.Open, FileAccess.Read))
   using (var ms = new MemoryStream())
   {
        i.CopyTo(ms);
        byte[] rawdata = ms.GetBuffer();

        using (var o = File.Create(@"output.pdf"))
           ms.CopyTo(o);
   }

在第二个CopyTo之前,内存流可能需要ms.Seek(0, SeekOrigin.Origin)或类似的东西。查一查,或尝试一下

答案 1 :(得分:3)

您正在使用File.WriteAllText来编写文件。

尝试File.WriteAllBytes