Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用C检查pdf文件是否损坏#_C#_.net_Pdf - Fatal编程技术网

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

C# 使用C检查pdf文件是否损坏#,c#,.net,pdf,C#,.net,Pdf,我们有一个生成pdf文件的应用程序,有时由于未知原因,其中一个pdf文件损坏,也就是说它创建时已损坏,我们需要检查此pdf是否已损坏,然后再继续创建其他pdf,如果已损坏,我们需要再次创建它 谢谢查看PDF解析器并尝试使用它们来检测损坏。例如 免责声明:我为Atalasoft工作 在中,我们包括一些PDF解析类,如果文件损坏,这些类将抛出 如果您添加我们的PDF阅读器插件,我们将尝试光栅化PDF——如果它已损坏,将抛出。如果问题是缺少片段,那么您可以在生成的图像中查找它们。查看PDF解析器并尝试

我们有一个生成pdf文件的应用程序,有时由于未知原因,其中一个pdf文件损坏,也就是说它创建时已损坏,我们需要检查此pdf是否已损坏,然后再继续创建其他pdf,如果已损坏,我们需要再次创建它


谢谢

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

免责声明:我为Atalasoft工作

在中,我们包括一些PDF解析类,如果文件损坏,这些类将抛出


如果您添加我们的PDF阅读器插件,我们将尝试光栅化PDF——如果它已损坏,将抛出。如果问题是缺少片段,那么您可以在生成的图像中查找它们。

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

免责声明:我为Atalasoft工作

在中,我们包括一些PDF解析类,如果文件损坏,这些类将抛出


如果您添加我们的PDF阅读器插件,我们将尝试光栅化PDF——如果它已损坏,将抛出。如果问题是缺少片段,那么您可以在生成的图像中查找它们。

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

您可以按如下方式检查标题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;
}

从技术角度来看,“腐败”是什么意思?会发生什么?0字节文件,仅复制x字节,内部为jibberish等。要添加到该文件中,是否未正确设置幻数?它是否会生成直到某一点,然后突然出现乱码?不,文件创建正确,大小正确,但当您尝试打开它时,它会告诉您文件已损坏。。。重复?从技术角度来看,“损坏”是什么意思?会发生什么?0字节文件,仅复制x字节,内部为jibberish等。要添加到该文件中,是否未正确设置幻数?它是否会生成直到某一点,然后突然出现乱码?不,文件创建正确,大小正确,但当您尝试打开它时,它会告诉您文件已损坏。。。重复?以一种非常复杂的方式检查并重复检查文件是否以“%PDF-”开头,这是PDF文件的神奇字节。这不是一个正确的损坏测试,但是,它应该测试整个文件。这个答案只是我有一个损坏的PDF文件的副本,这个代码无法执行!以一种非常复杂的方式,它检查并重复检查文件是否以“%PDF-”开头,这是PDF文件的神奇字节。这不是一个正确的损坏测试,但是,它应该测试整个文件。这个答案只是我有一个损坏的PDF文件的副本,这个代码无法执行!