You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@pdfbox.apache.org by "Tilman Hausherr (JIRA)" <ji...@apache.org> on 2014/05/11 00:05:08 UTC
[jira] [Commented] (PDFBOX-2070) Filter.decode() modifies PDF if
there is a filter array
[ 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)