Bug 104864

Summary: poppler_page_render_for_printing on cairo_pdf_surface repeats content
Product: poppler Reporter: Jaime Velasco Juan <jsagarribay>
Component: cairo backendAssignee: poppler-bugs <poppler-bugs>
Status: RESOLVED MOVED QA Contact:
Severity: normal    
Priority: medium CC: fdo-bugzilla
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: Test program
input file 1
input file 2
derive image surface UNIQUE_ID from its contents

Description Jaime Velasco Juan 2018-01-30 17:26:28 UTC
Created attachment 137056 [details]
Test program

I am writing a small utility to manipulate PDF files. It loads input files, let the user delete, duplicate or reorder pages and then calls poppler_page_render_for_printing in the desired output order, using a cairo_pdf_surface. It worked fine until testing with certain scanned PDF, where it outputs the same page each time.

I'll attach a C test program (compile with gcc test.c `pkg-config --cflags --libs poppler-glib cairo gobject-2.0 gio-2.0`) and two input PDF (zma_001.pdf and zma_002.pdf). Called as "./a.out zma_001.pdf zma_002.pdf output.pdf" is expected to create output.pdf with both input pages concatenated, but the first page appears twice (but clipped to the second page's dimensions).

The expected output is generated when using poppler_page_render instead of poppler_page_render_for_printing but this makes bigger files (maybe resamples the images?).

Thanks
Comment 1 Jaime Velasco Juan 2018-01-30 17:27:08 UTC
Created attachment 137057 [details]
input file 1
Comment 2 Jaime Velasco Juan 2018-01-30 17:27:30 UTC
Created attachment 137058 [details]
input file 2
Comment 3 Jaime Velasco Juan 2018-02-24 11:51:05 UTC
Created attachment 137578 [details] [review]
derive image surface UNIQUE_ID from its  contents

In CairoOutputDev::setMimeData we set CAIRO_MIME_TYPE_UNIQUE_ID to "poppler-surface-{ref.gen}-{ref.num}", and the same ref number is likely reused in several files, especially with scanned documents.

Set the ID to "poppler-surface-{digest}-{ref.gen}-{ref.num}" to avoid merging unrelated images in the output surface.
Comment 4 GitLab Migration User 2018-08-21 10:47:01 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/poppler/poppler/issues/371.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.