[
https://issues.apache.org/jira/browse/PDFBOX-2070?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13994219#comment-13994219
]
Tilman Hausherr commented on PDFBOX-2070:
-----------------------------------------
The reason is that the last filter returns the (modified copy in
filter.decode()) of the dictionary ("parameters" parameter) as "new
DecodeResult(parameters)". This (modified) copy is used to inialize
PDImageXObject here:
{code}
public PDImageXObject(PDStream stream, Map<String, PDColorSpace>
colorSpaces) throws IOException
{
this(stream, colorSpaces, stream.getStream().getDecodeResult());
}
{code}
That constructor is called by getSoftMask().
> Filter.decode() modifies PDF if there is a filter array
> -------------------------------------------------------
>
> Key: PDFBOX-2070
> URL: https://issues.apache.org/jira/browse/PDFBOX-2070
> Project: PDFBox
> Issue Type: Bug
> Affects Versions: 2.0.0
> Reporter: Tilman Hausherr
> Attachments: after.pdf, before.pdf
>
>
> If there are several filters (filter array) in an image, PDFBox is inserting
> an empty DecodeParms object, instead of either inserting an empty COSAarray,
> or (better) do nothing. Saving such a PDF results in it not being displayable
> in the Acrobat Reader.
> Test code:
> {code}
> PDDocument d = PDDocument.load("before.pdf");
> new PDFRenderer(d).renderImage(0);
> d.save("after.pdf");
> {code}
> The rendering is important because without it, the filtered objects aren't
> decoded.
--
This message was sent by Atlassian JIRA
(v6.2#6252)