From 75289de1108df376f4fc0faf364e2bfaee58b363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20B=C3=BCnzli?= Date: Wed, 7 May 2014 15:18:10 +0200 Subject: truncate the xref after compacting pdf_write_document still writes the entire xref with references to all freed objects even if the xref has been compacted which makes the result of mutool clean -ggg larger than necessary. --- source/pdf/pdf-write.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source') diff --git a/source/pdf/pdf-write.c b/source/pdf/pdf-write.c index f218429d..dea21801 100644 --- a/source/pdf/pdf-write.c +++ b/source/pdf/pdf-write.c @@ -2652,6 +2652,11 @@ void pdf_write_document(pdf_document *doc, char *filename, fz_write_options *fz_ if (opts.do_garbage >= 2 || opts.do_linear) renumberobjs(doc, &opts); + /* Truncate the xref after compacting and renumbering */ + if (opts.do_garbage >= 2 && !opts.do_incremental) + while (xref_len > 0 && !opts.use_list[xref_len-1]) + xref_len--; + if (opts.do_linear) { linearize(doc, &opts); -- cgit v1.2.3