Bug 49590 - Image does not show on PDF due to ICC Profile reading error.
Summary: Image does not show on PDF due to ICC Profile reading error.
Status: NEW
Alias: None
Product: poppler
Classification: Unclassified
Component: cairo backend (show other bugs)
Version: unspecified
Hardware: Other All
: medium normal
Assignee: poppler-bugs
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-05-07 09:34 UTC by Jose Aliste
Modified: 2014-04-25 14:48 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
PDF showing the bug (150.35 KB, application/pdf)
2012-05-07 09:34 UTC, Jose Aliste
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jose Aliste 2012-05-07 09:34:37 UTC
Created attachment 61149 [details]
PDF showing the bug

The attached pdf has an image that is not render by poppler. When rendering with the poppler-glib-demo I get:

Syntax Warning: not an ICC profile, invalid signature
Syntax Warning: read ICCBased color space profile error


Forwarded from https://bugzilla.gnome.org/show_bug.cgi?id=675577
Comment 1 Thomas Freitag 2012-05-07 11:05:22 UTC
Adobe Acrobat Pro says: ICC profile (of image with ICCBased colorspace) is corrupt. If You render it without lcms (the poppler used color management tool), it is okay. I'm not knowing, if this is possible with poppler-glib-demo or if You have to recompile it.
Probably poppler should ignore embedded invalid color profiles like acrobat reader does it.
Comment 2 Albert Astals Cid 2012-05-10 11:20:50 UTC
Moving to Cairo backend only since it works with splash.
Comment 3 Adrian Johnson 2013-01-27 11:17:31 UTC
The broken ICC profile is a red herring. The problem is an XObject with a huge BBox that overflows cairo's 24.8 fixed point.

In PDF all images have a size of 1x1. Normally the ctm is set to make the image the correct size then the image is drawn. eg

q 640 0 0 480 0 0 /Img Do Q

But in this PDF the image is inside a XObject. eg

q 540 0 0 800 0 0 /Foo Do Q

/Foo is:

<<
/Type /XObject
/BBox [0 0 20000 20000]
>>
stream
/Img Do
endstream


The actual BBox of Foo is 1x1. When cairo converts the 20000x20000 clip path to device units it overflows the 24.8 fixed point resulting a very small clip path the just happens to be an all white region of the image.

I'm not sure what would be the best way to fix this. One solution would be to add a range check flag to doPath() which is set in ::clip. In doPath() when the range check is enabled, check if the path is a rectangle and if it is, intersect it with the current clip region before calling cairo clip.
Comment 4 wstanzl 2014-04-25 14:48:11 UTC
May I join this one, 
I also hit this bug and would appreciate a fix.


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.