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

时间:2013-01-15 16:18:38

标签: java pdf itext

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

这个库的

PDFReader类有一些关于外部参照的有用的API,但没有一个用于我的目的。

要求是:

  1. 检查PDF是否具有外部参照压缩表。
  2. 如果1为真 - >然后“解压缩”外部参照表。
  3. 发送字节流以供进一步处理。
  4. 处理完成后,将外部参照表格“压缩”回原始格式
  5. 这方面的任何指示都将不胜感激。

    P.S。:实施不仅限于iText。可以使用任何其他可以实现它的Java库。许可(如果需要)也不是问题。

2 个答案:

答案 0 :(得分:1)

事实证明,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();
}

答案 1 :(得分:0)

您最好的选择可能是查看您想要对PDF做什么,然后使用该库。