获取文档的页数

时间:2018-03-28 07:59:53

标签: java spring maven

我刚刚实现了一个Java代码,以获取文档的页数,但它只用于PDF文件。我需要计算其他文件的页数(Docx,HTML等)。有什么想法吗?

我的代码是:

public int numberOfPages(@RequestBody() MultipartFile inputFile) throws Exception {

    int numberOfPages = 0;
    InputStream fileName = inputFile.getInputStream();
    PDDocument document = PDDocument.load(fileName);

    if (document != null) {
        numberOfPages = document.getNumberOfPages();
    }

    return numberOfPages;
}

1 个答案:

答案 0 :(得分:0)

我认为这并不像看起来那么容易,因为页码取决于纸张的大小,打印机的类型,图像的大小等。

一种可能的解决方案是将输入文档转换为PDF,然后您可以轻松地对页面进行计数。您可以将PDF内容与原始文档一起存储,也可以在每次需要页码信息时动态使用toPdf(FileInputStream文档)方法。它取决于文件数量和性能要求。

它可以将html,office文档,纯文本和图像转换为PDF。 您可以使用Apache Tika检查上传文件的类型,然后根据此信息,您可以执行正确的方法将上传的内容转换为PDF。

检查文件类型:

public static MediaType getMediaType(final byte[] content) throws IOException {
    try (InputStream stream = new ByteArrayInputStream(content)) {
        TikaConfig tika = TikaConfig.getDefaultConfig();
        Metadata metadata = new Metadata();
        return tika.getDetector().detect(stream, metadata);
    }
}

,然后

MediaType mediaType = ContentTypeDetector.getMediaType(content);
String uploadedContent = mediaType.toString();

if (uploadedContent.equals("image/jpeg") {
    PDF pdf = SomeClass.jpgToPdf(...)
} else if (uploadedContent.equals(...) {
    PDF pdf = SomeClass....(...)
}

iText是一个很好的Java库,可以根据您的设置从上传的文件创建PDF文件。