【问题标题】:Get number of pages of a document获取文档的页数
【发布时间】:2018-03-28 16:25:55
【问题描述】:

我刚刚实现了一个 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;
}

【问题讨论】:

标签: java spring maven


【解决方案1】:

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

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

它可以将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 文件。

【讨论】:

  • 但是,如果将PDF转换为Docx,可能结果页数不一样
  • 这是可能的。但是为什么要将pdf转换为doc呢?
猜你喜欢
  • 2013-05-29
  • 1970-01-01
  • 2015-05-13
  • 2012-05-04
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
相关资源
最近更新 更多