3

在我的项目中,我需要显示 Word 文档(.doc、.docx)文件中的页数和 Excel 文档(.xls、.xlsx)中的工作表数。我尝试使用 Docx4j 读取 .docx 文件,但性能很差,但我只需要字数并尝试使用 Apache POI。我收到一个错误,例如:

"trouble writing output: Too many methods: 94086; max is 65536. By package:" 

我想知道是否有任何可用于 android 的付费/开源库。

4

1 回答 1

2

没有办法在 MS Word 文件中显示确切的页数,因为不同的用户会有所不同。确切数字取决于打印机设置、纸张设置、字体、可用图像等。

不过,您可以对二进制文件执行以下操作:

  • 打开文件使用 POIFSFileSystem 或 NPOIFSFileSystem
  • 仅提取 FileInformationBlock,因为它在构造函数 HWPFDocumentCore 中完成
  • 使用来自 FileInformationBlock 的信息创建 DocumentProperties,因为它是在 HWPFDocument 的构造函数中完成的
  • 获取 DOP 的属性 cPg 的值:DocumentProperties::getCPg()

该字段的描述是:“一个有符号整数值,它指定主文档中最后计算或估计的页数,具体取决于 fExactCWords 和 fIncludeSubdocsInStats 的值。”

对于 DOCX/XLSX 文档,您将需要使用 SAX 或 StAX 方法访问相同的(我假设)属性。

于 2012-12-10T14:19:35.613 回答