iText库中是否有可用的API来检测PDF文件是否具有压缩的外部参照表?

该库的PDFReader类具有一些关于外部参照的有用API,但是没有一个达到我的目的。

要求是:


检查PDF是否具有外部参照压缩表。
如果1为true->然后“解压缩”外部参照表。
发送字节流以进行进一步处理。
处理完成后,将外部参照表“压缩”回原始形式


在这方面的任何指针将不胜感激。

附注:实施方式不限于iText。可以使用任何其他可以实现它的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();
}


要重新压缩外部参照表,请使用以下方法:

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();
}

关于java - 如何检测PDF是否在Java中压缩了外部参照表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14342041/

10-13 04:57