1

PDFファイルに圧縮されたxrefテーブルがあるかどうかを検出するためにiTextライブラリで利用できるAPIはありますか?

このライブラリのPDFReaderクラスには、xref に関して便利な API がいくつかありますが、目的にかなうものはありません。

要件は次のとおりです。

  1. PDF に xref 圧縮テーブルがあるかどうかを確認します。
  2. 1 が true の場合 -> 外部参照テーブルを「圧縮解除」します。
  3. さらに処理するためにバイトストリームを送信します。
  4. 処理が完了したら、外部参照テーブルを元の形式に「圧縮」します。

この点に関する指針をいただければ幸いです。

PS:実装は iText に限定されません。それを実現できる他の Java ライブラリを使用できます。ライセンス (必要な場合) も問題ではありません。

4

2 に答える 2

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();
}
于 2013-01-22T07:56:32.040 に答える
0

あなたの最善の策は、PDF で他に何をしたいのかを調べてから、そのライブラリを使用することです。

于 2013-01-15T17:48:57.207 に答える