使用c#检查pdf文件是否损坏

本文关键字:是否 损坏 文件 pdf 检查 使用 | 更新日期: 2023-09-27 18:09:02

我们有一个生成pdf文件的应用程序,有时由于某些未知的原因,其中一个pdf文件损坏了,那就是它被创建损坏了,我们需要检查这个pdf是否损坏,然后再继续其他pdf,如果它损坏了,我们需要重新创建它。

谢谢

使用c#检查pdf文件是否损坏

查看PDF解析器并尝试使用它们来检测损坏。例如:ghostscript.

免责声明:我为Atalasoft工作

在DotImage文档成像中,我们包含了一些PDF解析类,如果文件损坏将抛出。

如果你添加我们的PDF阅读器附加组件,我们将尝试栅格化PDF -如果它是损坏的,那将抛出。如果问题是缺少部分,那么您可以在生成的图像中查找它们。

你可以像这样检查Header PDF:

public bool IsPDFHeader(string fileName)    
{
    byte[] buffer = null;
    FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    BinaryReader br = new BinaryReader(fs);
    long numBytes = new FileInfo(fileName).Length;
    //buffer = br.ReadBytes((int)numBytes);
    buffer = br.ReadBytes(5);
    var enc = new ASCIIEncoding();
    var header = enc.GetString(buffer);
    //%PDF−1.0
    // If you are loading it into a long, this is (0x04034b50).
    if (buffer[0] == 0x25 && buffer[1] == 0x50
        && buffer[2] == 0x44 && buffer[3] == 0x46)
    {
        return header.StartsWith("%PDF-");
    }
    return false;
}