From 74627fe0ccb279638f82472048311097b39741d5 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Thu, 30 Jun 2016 15:09:59 +0200 Subject: pdf: Flatten inheritable page properties when copying pages. Affects pdfclean, pdfmerge, and pdfposter. --- source/pdf/pdf-page.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'source/pdf/pdf-page.c') diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index 9fa96261..8ba02562 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -258,6 +258,23 @@ pdf_lookup_inherited_page_item(fz_context *ctx, pdf_document *doc, pdf_obj *node return val; } +static void +pdf_flatten_inheritable_page_item(fz_context *ctx, pdf_document *doc, pdf_obj *page, pdf_obj *key) +{ + pdf_obj *val = pdf_lookup_inherited_page_item(ctx, doc, page, key); + if (val) + pdf_dict_put(ctx, page, key, val); +} + +void +pdf_flatten_inheritable_page_items(fz_context *ctx, pdf_document *doc, pdf_obj *page) +{ + pdf_flatten_inheritable_page_item(ctx, doc, page, PDF_NAME_MediaBox); + pdf_flatten_inheritable_page_item(ctx, doc, page, PDF_NAME_CropBox); + pdf_flatten_inheritable_page_item(ctx, doc, page, PDF_NAME_Rotate); + pdf_flatten_inheritable_page_item(ctx, doc, page, PDF_NAME_Resources); +} + /* We need to know whether to install a page-level transparency group */ static int pdf_resources_use_blending(fz_context *ctx, pdf_document *doc, pdf_obj *rdb); -- cgit v1.2.3