Verificar se Arquivo PDF está corrompido

Gostaria de saber se alguém aqui ja usou alguma API Java para validação de arquivos em PDF?

Que ele me possibilite saber a quantidade de página e se o arquivo está corrompido.

Desde já meu agradecimento a quem ajudar.

Utilizando a API iText, você pode obter o número de páginas dessa forma:

int numeroDePaginas(File arquivo) {
    RandomAccessFile raf = new RandomAccessFile(arquivo, "r");
    RandomAccessSource ras = new RandomAccessSourceFactory().createSource(raf)
    RandomAccessFileOrArray rafoa = new RandomAccessFileOrArray(ras);
    PdfReader pdf = new PdfReader(rafoa, new byte[0]);
    int paginas = pdf.getNumberOfPages();
    pdf.close();
    return paginas;
}

Grato. Sabe dizer alguma forma de detectar se o arquivo está corrompido?

Em principio a API lança um InvalidPdfException se o arquivo estiver corrompido.
Mas você também pode utilizar o método isRebuilt() para verificar se havia erros no arquivo.

int numeroDePaginas(File arquivo) {
    try {
        RandomAccessFile raf = new RandomAccessFile(arquivo, "r");
        RandomAccessSource ras = new RandomAccessSourceFactory().createSource(raf)
        RandomAccessFileOrArray rafoa = new RandomAccessFileOrArray(ras);
        PdfReader pdf = new PdfReader(rafoa, new byte[0]);
        if (pdf.isRebuilt()) {
            // possivelmente corrompido
        }
        int paginas = pdf.getNumberOfPages();
        pdf.close();
        return paginas;
    } catch (InvalidPdfException ipe) {
        // possivelmente corrompido
    }
}

Meu muito obrigado! Valeu…

1 curtida