1

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

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

要求是:

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

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

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

4

2 回答 2

1

事实证明,这已经在 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();
}
于 2013-01-22T07:56:32.040 回答
0

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

于 2013-01-15T17:48:57.207 回答