フォームフラット化時の iText の動作に関する質問があり、Web で何も見つかりませんでした (または未回答の質問)。これが私がすることです:
stamper.setFormFlattening(true);
結果のサイズは、たとえば 207kb から 172kb にすぐに縮小されます。直接実行
stamper.getReader().removeUnusedObjects();
効果はありません。PDF をテキスト エディターで開くと、その結果ファイルに未参照のオブジェクトが多数見つかります。次に、PDFを「新鮮な」スタンパーに再度ロードして呼び出すと
stamper.getReader().removeUnusedObjects();
Pdf は 99kb に縮小され、参照されていないオブジェクトは見つかりません。だからここに私の質問があります: PDFから参照されていないすべてのオブジェクトをすぐに(ファイルまたはメモリから再度読み直すことなく)削除することは可能ですか? 私には、最初の実行では、直接フィールドに関連するすべてのオブジェクトが削除されますが、それらのオブジェクトによって間接的に参照される辞書は削除されないようです。