Apache Poi:获取DOC文档中的页数

时间:2017-08-04 15:45:16

标签: java apache-poi

如何使用Apache Poi在DOC文档中获取页数?

我尝试使用以下代码:

HWPFDocument wordDoc = new HWPFDocument(new FileInputStream(lowerFilePath));
Integer pageCount = wordDoc.getSummaryInformation().getPageCount();

但有例外(Apache Poi版本:3.13)

    java.lang.NoSuchMethodError: org.apache.poi.util.IOUtils.toByteArray(Ljava/io/InputStream;I)[B
at org.apache.poi.hwpf.HWPFDocumentCore.verifyAndBuildPOIFS(HWPFDocumentCore.java:95)
at org.apache.poi.hwpf.HWPFDocument.<init>(HWPFDocument.java:174)

2 个答案:

答案 0 :(得分:2)

较低版本的Apache POI存在一些兼容性问题,并且不支持某些功能。我也遇到了同样的问题,所以我升级到了Apache POI的4.0.1版本。

如果使用maven依赖项,则可以使用它。

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>4.0.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>4.0.1</version>
</dependency>

答案 1 :(得分:1)

您的代码应该正常运行。这个非常常见的POI错误的原因是类路径上的旧版本的库尚未存在该方法。此外,库中某些版本的部件也不兼容。

如果你使用maven,那么这段代码只需要这些依赖项:

<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi</artifactId>
  <version>${poi.version}</version>
</dependency>
<dependency>
  <groupId>org.apache.poi</groupId>
  <artifactId>poi-scratchpad</artifactId>
  <version>${poi.version}</version>
</dependency>

确保您没有额外版本的罐子。