pdfbox-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dave Smith (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PDFBOX-1445) /ImageMask true does not work. Patch included.
Date Tue, 13 Nov 2012 22:46:12 GMT

    [ https://issues.apache.org/jira/browse/PDFBOX-1445?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13496633#comment-13496633
] 

Dave Smith commented on PDFBOX-1445:
------------------------------------

I have included fixed for both /ImageMask and /Mask . The latter was not being handled at
all. I have samples for both but I need the ttps://issues.apache.org/jira/browse/PDFBOX-1067
applied to test the /Mask case...
                
> /ImageMask true does not work. Patch included.
> ----------------------------------------------
>
>                 Key: PDFBOX-1445
>                 URL: https://issues.apache.org/jira/browse/PDFBOX-1445
>             Project: PDFBox
>          Issue Type: Bug
>            Reporter: Dave Smith
>         Attachments: PDCcitt.java.patch, PDJpeg.java.patch, PDPixelMap.java.patch, PDXObjectImage.java.patch
>
>
> I have the following pdf...
> 10 0 obj
> << 
> /Type /Page 
> /MediaBox [ 0 0 612.0 792.0 ] 
> /Parent 3 0 R 
> /Resources << /XObject << /Obj4 4 0 R /Obj5 5 0 R /Obj6 6 0 R /Obj7 7 0 R
>> /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> 
> /Contents [ 8 0 R 9 0 R ] 
> >> 
> endobj
> Which then draws 4 images. The first one is a "base" and then rest are image masks
> 9 0 obj
> << /Filter /FlateDecode /Length 121 >> 
> stream
> q
> 612.00 0 0 792.00 0.00 0.00 cm
> /Obj4 Do
> Q
> q
> 0.129 g
> 524.16 0 0 556.80 48.00 127.68 cm
> /Obj5 Do
> Q
> q
> 0.302 g
> 220.80 0 0 398.40 48.00 286.08 cm
> /Obj6 Do
> Q
> q
> 0.204 g
> 524.16 0 0 469.44 48.00 185.28 cm
> /Obj7 Do
> Q
> endstream
> endobj
> 4 0 obj
> << /Type /XObject /Subtype /Image /Width 1275 /Height 1650 /BitsPerComponent 8

> /ColorSpace /DeviceGray /Filter [ /FlateDecode /DCTDecode ] /Length 50485 >> 
> stream
> endstream
> endobj
> 5 0 obj
> << /Type /XObject /Subtype /Image /Width 2184 /Height 2320 /BitsPerComponent 1

> /ImageMask true /Filter /CCITTFaxDecode /DecodeParms << /K -1 /Columns 2184 >>

> /Length 15580 >> 
> stream
> etc ...
> The current code simply treats the imagemask as an image. Since this is just a 1 bit
image it has no Alpha channel it overwrites the existing image and we simply get the last
image drawn.
> In
> org.apache.pdfbox.util.operator.pagedrawer.Invoke.java
> method
> public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
> after 
> if (awtImage == null) 
>                 {
>                     LOG.warn("getRGBImage returned NULL");
>                     return;//TODO PKOCH
>                 }
> If you add the following code it fixes the problem. I can not provide the sample doc
due to privacy reasons. 
> /**
>                  * Spec 8.9.6.2
>                  * If ImageMask is true then the image is one bit. Black means draw the
current colour and white means use the colour on the current image (ie Mask). 
>                  * Convert the map to an image with an Alpha channel so we can lay it
on top
>                  */
>                 if(image.getImageMask())
>                 {
>                 	Color currentColour = drawer.getGraphicsState().getStrokingColor().getJavaColor();
>                 	final int onColour = 0xff000000 | currentColour.getRGB();
>                 	BufferedImage bia = new BufferedImage(awtImage.getWidth(),awtImage.getHeight(),BufferedImage.TYPE_INT_ARGB);
>                 	for(int y=0;y<awtImage.getHeight();y++)
>                 	{
>                 		for(int x=0;x<awtImage.getWidth();x++)
>                 		{
>                 			bia.setRGB(x, y, (awtImage.getRGB(x, y) & 0x00ffffff) == 0xffffff
? 0x00ffffff : onColour);
>                 		}
>                 	}
>                 	awtImage = bia;
>                 }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message