проверьте, не поврежден ли PDF-файл, используя C # - PullRequest
1 голос
/ 20 сентября 2011

У нас есть приложение, которое генерирует PDF-файлы, иногда по неизвестной причине, один из PDF-файлов поврежден, то есть он создан поврежденным, нам нужно проверить, не поврежден ли этот PDF-файл, прежде чем переходить к другим PDF-файлам. , если он поврежден, нам нужно создать его снова.

Спасибо

Ответы [ 2 ]

2 голосов
/ 20 сентября 2011

Посмотрите на парсеры PDF и попробуйте использовать их для выявления повреждений.Например, ghostscript .

Отказ от ответственности: я работаю для Atalasoft

В DotImage Document Imaging , мы включаем некоторые классы PDF Parsing, которые выдают, еслифайл поврежден.

Если вы добавите нашу надстройку PDF Reader, мы попытаемся растеризовать PDF - если он поврежден, это приведет к выбросу.Если в задаче отсутствуют фрагменты, вы можете найти их в полученном изображении.

0 голосов
/ 13 мая 2016

Заголовок 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...