iText库中是否有可用的 API来检测 PDF 文件是否具有压缩的外部参照表?
这个库的PDFReader类有一些关于外部参照的有用 API,但没有一个符合我的目的。
要求是:
- 检查 PDF 是否有外部参照压缩表。
- 如果 1 为真 -> 则“解压缩”外部参照表。
- 发送字节流以进行进一步处理。
- 处理完成后,将外部参照表“压缩”回其原始形式
在这方面的任何指针将不胜感激。
PS:实施不限于iText。可以使用任何其他可以实现它的 Java 库。许可(如果需要)也不是问题。
iText库中是否有可用的 API来检测 PDF 文件是否具有压缩的外部参照表?
这个库的PDFReader类有一些关于外部参照的有用 API,但没有一个符合我的目的。
要求是:
在这方面的任何指针将不胜感激。
PS:实施不限于iText。可以使用任何其他可以实现它的 Java 库。许可(如果需要)也不是问题。
事实证明,这已经在 iText 中得到支持。您需要创建一个PdfReader
实例,然后使用isNewXrefType()
.
要解压缩 PDF 文档的外部参照表,您可以使用以下方法:
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();
}
您最好的选择可能是查看您还想对 PDF 做什么,然后使用该库。