如何检测PDF是否在Java中压缩了xref表



iText库中是否有可用的API来检测PDF文件是否已压缩xref表?

这个库的PDFReader类有一些关于xref的有用API,但没有一个符合我的目的。

要求是:

  1. 检查PDF是否有xref压缩表
  2. 如果1为true ->,则"Uncompress"xref .
  3. 发送字节流进行进一步处理。
  4. 一旦处理完成"压缩"回xref表到其原始形式

如能提供这方面的建议,我将不胜感激。

注::实现不局限于ittext。可以使用任何其他可以实现此功能的Java库。许可(如果需要)也不是问题。

事实证明,iText已经支持这一点。您需要创建一个PdfReader实例,然后使用isNewXrefType()

要解压缩PDF文档的XRef表,可以使用以下方法:

public void uncompressXRef(String src, String dest)
    throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    stamper.close();
    reader.close();
}

要重新压缩XRef表,使用以下方法:

public void recompressXRef(String src, String dest)
    throws IOException, DocumentException {
    PdfReader reader = new PdfReader(src);
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
    stamper.getWriter().setFullCompression();
    stamper.close();
    reader.close();
}

您最好的办法可能是看看您还想对PDF做什么,然后使用该库。

最新更新