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

时间:2011-09-20 12:35:03

标签: c# .net pdf

我们有一个生成pdf文件的应用程序,有时出于某种未知原因,其中一个pdf文件被破坏,即它被创建已损坏,我们需要检查这个pdf是否已损坏,然后继续其他pdf ,如果它已损坏,我们需要再次创建它。

由于

2 个答案:

答案 0 :(得分:3)

查看PDF Parsers并尝试使用它们来检测损坏。例如,ghostscript

免责声明:我在Atalasoft工作

DotImage Document Imaging中,我们包含一些PDF解析类,如果文件已损坏,它们将抛出。

如果您添加我们的PDF阅读器附加组件,我们将尝试光栅化PDF - 如果它已损坏,则会抛出。如果问题丢失了,那么您可以在生成的图像中查找它们。

答案 1 :(得分:0)

您可以像这样检查标题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;
}