pdfbox-dev mailing list archives

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

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

Andreas Lehmkühler commented on PDFBOX-1445:
--------------------------------------------

The idea is to replace your code with the code from PDPixelMap and remove the code from PDPIxelMap.
So that the ImageMask stuff will be used with all kind of PDXObjectImages (PixelMap, Ccitt
and Jpeg). WDYT
                
> /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
>
> 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