.net 数据库中损坏的PDF数据
我使用的是MS SQL 2008,我有一个varbinary(max)类型列的表.net 数据库中损坏的PDF数据,.net,sql,sql-server-2008,devexpress,xaf,.net,Sql,Sql Server 2008,Devexpress,Xaf,我使用的是MS SQL 2008,我有一个varbinary(max)类型列的表 此表有许多上载的pdf文件(字节数组) 我正在将这些字节转换为pdf文件 按此代码: using (FileStream fs = new FileStream (@"D:\EIFiles\test.pdf", FileMode.Create)) { fs.Write(byte, 0, byte.Length); } 许多p
此表有许多上载的pdf文件(字节数组)
我正在将这些字节转换为pdf文件
按此代码:
using (FileStream fs = new FileStream
(@"D:\EIFiles\test.pdf", FileMode.Create))
{
fs.Write(byte, 0, byte.Length);
}
许多pdf文件都可以打开,但其中一些无法打开,因为adobe reader会发出“已损坏文件”消息的警报。
注意:所有这些文件都可以通过使用此DB的程序(用Devexpress XAF编写)打开。默认
文件数据类型的Devexpress XAF实现会在保存流(Gzip)之前对其进行压缩。如果不先解压缩流,您将无法读取内容。您可以使用DevExpress.Persistent.Base程序集中的压缩.decompression()
或者,您可以实现自己版本的
FileData
,并更改此行为。查看源代码(或使用反编译器)并从Content
属性中删除[ValueConverter(typeof(CompressionConverter))]
属性。当您说“可以通过程序打开”时。该程序是否显示PDF?尝试使用多个替代PDF阅读器来读取损坏的文件,您就会知道问题是在阅读器中还是在文件中。请随时向我发送PDF示例,我可以使用Adobe Acrobat的完整版本为您检查。还要检查sql server上的排序规则我在使用unicode时遇到过类似的问题。我认为,这是fs.Write问题,读卡器完全可以工作。