确认上传的文件是否为pdf

问题描述 投票:2回答:3

如何验证上传的文件是否仅为PDF?不仅是扩展名(.pdf),还包括内容。如果有人将任何其他文件的扩展名更改为pdf文件,则上传时应该会失败。

java
3个回答
2
投票

您可以在此处使用Apache Tika。 http://tika.apache.org/

您还可以在此处找到一个实际示例:https://dzone.com/articles/determining-file-types-java


1
投票

有很多方法可以验证PDF文件。我用itext来检查pdf是否损坏。

try {
        PdfReader pdfReader = new PdfReader(file);

        PdfTextExtractor.getTextFromPage(pdfReader, 1);

        LOGGER.info("pdfFileValidator ==> Exit");
        return true;
    } catch (InvalidPdfException e) {
        e.printStackTrace();
        LOGGER.error("pdfFileValidator ==> Exit. Error ==> " + e.getMessage());
        return false;
    }

如果文件不是PDF或文件已损坏,则它将抛出InvalidPDFException。对于以上示例,您需要itext库。


0
投票

您可以使用许多验证库来验证文件是否符合PDF。例如,您可以使用-veradpfpdfbox。当然,您可以使用其他可以为您完成工作的库。如前所述,tika是另一个可以读取文件元数据并告诉您文件是什么的库。

作为示例(一个简单的例子),您可以使用pdfbox做一些事情。还请记住,此will会验证文件是否符合PDF / A。

boolean validateImpl(File file) {

    PreflightDocument document = new PreflightParser(file).getPreflightDocument();

    try {
        document.validate();
        ValidationResult validationResult = document.getResult();

        if (validationResult.isValid()) {
            return true;
        }

    } catch (Exception e) {
       // Error validating
    }
    return false;
}

或使用Tika,您可以执行类似操作

public ContentType tikaDetect(File file) {

    Tika tika = new Tika();

    String detectedType = tika.detect(file);
}
© www.soinside.com 2019 - 2024. All rights reserved.