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/