1

我在我的应用程序中遇到问题,它从磁盘读取 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。

有人可以帮忙吗?非常感谢!!

4

2 回答 2

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

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

于 2012-12-07T21:21:58.907 回答
3

File.WriteAllText用来写你的文件。

试试File.WriteAllBytes

于 2012-12-07T21:22:26.050 回答