簡體   English   中英

驗證以檢查上傳的文件是 pdf

[英]Validate to check uploaded file is pdf

如何驗證上傳的文件是否僅為 PDF? 不僅通過擴展名(.pdf)而且還有內容。如果有人將任何其他文件的擴展名更改為 pdf 文件,那么它在上傳時應該會失敗。

為此,您可以使用 Apache Tika,可在此處獲得。 http://tika.apache.org/

您還可以在此處找到一個實際示例: https : //dzone.com/articles/determining-file-types-java

有很多方法可以驗證 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 庫。

您可以使用許多驗證庫來驗證文件是否符合 PDF。 例如,您可以使用-veradpfpdfbox 當然,您可以使用任何其他可以為您完成工作的庫。 正如已經提到的, tika是另一個可以讀取文件元數據並告訴您文件是什么的庫。

作為一個例子(一個簡單的例子),你可以用pdfbox做一些事情。 另請記住,這驗證文件是否符合 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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM