[ 
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)

Reply via email to