diff options
author | Philipp Knechtges <philipp-dev@knechtges.com> | 2017-08-28 12:23:46 +0200 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2017-08-31 13:42:39 +0200 |
commit | 98a0491b614bd4461bec7b286c08a97c2dab705b (patch) | |
tree | 2e950d7f3c26cb8ed22829d32d19695cd2726b38 /source/pdf | |
parent | 108325161df50f90073309a042993454a3208d90 (diff) | |
download | mupdf-98a0491b614bd4461bec7b286c08a97c2dab705b.tar.xz |
Do not deflate metadata (necessary for PDF/A compliance).
Diffstat (limited to 'source/pdf')
-rw-r--r-- | source/pdf/pdf-write.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/source/pdf/pdf-write.c b/source/pdf/pdf-write.c index a70addad..d78442a2 100644 --- a/source/pdf/pdf-write.c +++ b/source/pdf/pdf-write.c @@ -1822,6 +1822,14 @@ static int is_font_stream(fz_context *ctx, pdf_obj *obj) return 0; } +static int is_xml_metadata(fz_context *ctx, pdf_obj *obj) +{ + if (pdf_name_eq(ctx, pdf_dict_get(ctx, obj, PDF_NAME_Type), PDF_NAME_Metadata)) + if (pdf_name_eq(ctx, pdf_dict_get(ctx, obj, PDF_NAME_Subtype), PDF_NAME_XML)) + return 1; + return 0; +} + static void writeobject(fz_context *ctx, pdf_document *doc, pdf_write_state *opts, int num, int gen, int skip_xrefs) { pdf_xref_entry *entry; @@ -1888,6 +1896,8 @@ static void writeobject(fz_context *ctx, pdf_document *doc, pdf_write_state *opt do_deflate = 1, do_expand = 0; if (opts->do_compress_fonts && is_font_stream(ctx, obj)) do_deflate = 1, do_expand = 0; + if (is_xml_metadata(ctx, obj)) + do_deflate = 0, do_expand = 0; if (do_expand) expandstream(ctx, doc, opts, obj, num, gen, do_deflate); else |