我有一个包含更多二进制类型列的表。我必须将这些字节数组转换为pdf。我用c#代码编写如下:
this.Cursor = Cursors.WaitCursor;
using (CMEntities myEntity = new CMEntities())
{
myEntity.ContextOptions.LazyLoadingEnabled = false;
var r = (from b in myEntity.FileDatas
orderby b.Oid
where b.Status == null
select b).Skip(Directory.GetFiles(@"D:\test\FromBinary\", "*.*", SearchOption.AllDirectories).Length).Take(500);
button5.Text = Directory.GetFiles(@"D:\test\FromBinary\", "*.*", SearchOption.AllDirectories).Length.ToString();
int i = 1;
try
{
FileSystemStoreObject fileSystem = new FileSystemStoreObject();
foreach (var item in r)
{
byte[] a = item.Content;
File.WriteAllBytes(@"D:\test\FromBinary\" + item.Oid + "-" + item.FileName, a);
fileSystem.Oid = item.Oid;
fileSystem.FileName = item.FileName;
fileSystem.Size = item.size;
item.Status = 1;
myEntity.FileSystemStoreObjects.AddObject(fileSystem);
if (i == 500)
{
break;
}
i++;
fileSystem = new FileSystemStoreObject();
}
myEntity.SaveChanges();
}
catch { }
}
但是当我的程序开始运行时,我的一些 pdf 文件无法打开。我收到错误消息,该文件已损坏或...... 如何获得健康的pdf文件? 请帮助我。
请您参考如下方法:
如果有些人对PDF也有问题,我建议下载PDF specification .
事实上,您可以看到 PDF 文件必须以 %PDF-
plus 版本开头,例如 %PDF-1.4
并以 %%EOF 结尾
,前面两行是字节偏移量和startxref
... 例如,如果您使用 Notepad++ 查看生成的 PDF,您可以确定文件是否完整以及缺少哪一部分。