これにがっかりするかもしれないことを前もって警告します。iTextは、実際にはパーサーとして使用することを目的としたものではありません。まったく新しいPDFドキュメントを作成するためのものですが、それを試してみることができます。
まず、iTextを使用して、既存のPDFドキュメントを変更することはできません。ただし、できることは、必要な追加機能を使用してコピーを作成することです。(他の誰かがもっとよく知っているなら、私に知らせてください、これは私を夢中にさせます。)
やりたいことは、ソースファイルの入力ストリームからPdfReaderオブジェクトを作成することです。次に、宛先のPdfCopyオブジェクト(既存のソースからのデータの取得をより便利にする拡張PdfWriter)を作成します。
私の知る限り、ブックマークはiTextからはまったく取得できません。別のライブラリが必要になる場合があります。jpedalだと思いますそれらを抽出する機能がある場合があります(XMLドキュメントとして取得でき、必要なものを取得するために解析する必要がある場合があります)。ただし、取得しても、java.util.Listに追加できます。そのリストをPDFCopyのアウトラインとして設定します。ブックマーク自体は、特定のキーのセットを持つ単なるハッシュマップです。すべての値が何であるかはわかりませんが、「タイトル」、「アクション」が含まれています(これは、名前付きの宛先であることを指定する場所のようですが、その値が何であるかはわかりません)、および「URI」(これが外部リンクである場合に使用されます。これにより、リンク先の名前付き宛先の名前が指定されると思われます)。繰り返しますが、詳細を見つけるのは難しいです。
次に、リーダーのページを繰り返し処理し、各ページをPdfCopyにインポートします。 このページはあなたを助けるかもしれません。
申し訳ありませんが、私はあなたにこれ以上役に立ちません。幸運を。
PS(L)GPLまたはBSDライセンスのいずれかであるより良いツールを他の誰かが知っているなら、私はそれについて聞いてみたいです。