From 146ad732d5cf8f35876d1600115cbcb210fb7d99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20B=C3=BCnzli?= Date: Fri, 18 Jul 2014 15:50:17 +0200 Subject: report more cases of blending use for pdf_page pdf_page::transparency is supposed to indicate whether a page uses PDF transparency features. The checks aren't complete, though, which is relevant for devices which require additional handling for transparency (such as SumatraPDF's gdiplus_device). See https://code.google.com/p/sumatrapdf/issues/detail?id=2107 and https://code.google.com/p/sumatrapdf/issues/detail?id=2540 for example documents. --- source/pdf/pdf-page.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'source/pdf') diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index fe77830f..a6a5699a 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -273,6 +273,8 @@ static int pdf_xobject_uses_blending(pdf_document *doc, pdf_obj *dict) { pdf_obj *obj = pdf_dict_gets(dict, "Resources"); + if (!strcmp(pdf_to_name(pdf_dict_getp(dict, "Group/S")), "Transparency")) + return 1; return pdf_resources_use_blending(doc, obj); } @@ -497,6 +499,8 @@ pdf_load_page(pdf_document *doc, int number) if (pdf_resources_use_blending(doc, page->resources)) page->transparency = 1; + else if (!strcmp(pdf_to_name(pdf_dict_getp(pageobj, "Group/S")), "Transparency")) + page->transparency = 1; for (annot = page->annots; annot && !page->transparency; annot = annot->next) if (annot->ap && pdf_resources_use_blending(doc, annot->ap->resources)) -- cgit v1.2.3