Author: lehmi
Date: Tue Mar 30 18:05:32 2010
New Revision: 929209
URL: http://svn.apache.org/viewvc?rev=929209&view=rev
Log:
PDFBOX-674: avoid ArrayOutOfBounds by using single rgb values for the
DeviceGray color. Patch by Maruan Sahyoun (sahyoun at fileaffairs dot de)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java
URL:
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java?rev=929209&r1=929208&r2=929209&view=diff
==============================================================================
---
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java
(original)
+++
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java
Tue Mar 30 18:05:32 2010
@@ -135,14 +135,25 @@ public class PDColorState implements Clo
}
else
{
- Color override = iccOverrideColor;
- ColorSpace cs = colorSpace.getJavaColorSpace();
- if (colorSpace.getName().equals(PDSeparation.NAME) &&
components.length == 1)
+ if (components.length == 1)
{
- //Use that component as a single-integer RGB value
- return new Color((int)components[0]);
+ if (colorSpace.getName().equals(PDSeparation.NAME))
+ {
+ //Use that component as a single-integer RGB value
+ return new Color((int)components[0]);
+ }
+ if (colorSpace.getName().equals(PDDeviceGray.NAME))
+ {
+ // Handling DeviceGray as a special case as with JVM
1.5.0_15
+ // and maybe others printing on Windows fails with an
+ // ArrayIndexOutOfBoundsException when selecting colors
+ // and strokes e.g.
sun.awt.windows.WPrinterJob.setTextColor
+ return new
Color(components[0],components[0],components[0]);
+ }
}
- else if (cs instanceof ICC_ColorSpace && override != null)
+ Color override = iccOverrideColor;
+ ColorSpace cs = colorSpace.getJavaColorSpace();
+ if (cs instanceof ICC_ColorSpace && override != null)
{
log.warn(
"Using an ICC override color to avoid a potential"