字节数组到pdf

时间:2013-01-10 13:32:11

标签: c#

我正在尝试将存储在sql列中的文件的内容转换为pdf。

我使用以下代码:

byte[] bytes;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, fileContent);
bytes = ms.ToArray();
System.IO.File.WriteAllBytes("hello.pdf", bytes);

生成的pdf在某种意义上是损坏的,当我在notepad ++中打开pdf时,我看到一些垃圾标题(无论fileContent如何都是一样的)。垃圾标题是NUL SOH NUL NUL NUL ....

2 个答案:

答案 0 :(得分:51)

你不应该使用BinaryFormatter - 这是为了将.Net类型序列化为二进制文件,以便它们可以作为.Net类型再次读回。

如果它存储在数据库中,希望作为varbinary - 那么您需要做的就是从中获取字节数组(这将取决于您的数据访问技术 - EF和Linq to Sql,for例如,将创建一个映射,使得获取字节数组变得微不足道),然后像在最后一行代码中一样将其写入文件。

运气好的话 - 我希望fileContent这里是字节数组?在这种情况下你可以做到

System.IO.File.WriteAllBytes("hello.pdf", fileContent);

答案 1 :(得分:0)

通常,如果字节数组出了问题,就会发生这种情况。

File.WriteAllBytes("filename.PDF", Byte[]);

这将创建一个新文件,将指定的字节数组写入该文件,然后关闭该文件。如果目标文件已经存在,它将被覆盖。

这也可以异步实现。

public static System.Threading.Tasks.Task WriteAllBytesAsync 
(string path, byte[] bytes, System.Threading.CancellationToken cancellationToken = null);