svn commit: r1565412 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java

2014-02-06 Thread tilman
Author: tilman
Date: Thu Feb  6 19:15:16 2014
New Revision: 1565412

URL: http://svn.apache.org/r1565412
Log:
PDFBOX-1888: close ImageInputStream as suggested by Tim Cameron
Task #PDFBOX-1888 - JBIG2Filter is creating an ImageInputStream (with temp 
file) and not closing it

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java?rev=1565412r1=1565411r2=1565412view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
 Thu Feb  6 19:15:16 2014
@@ -28,6 +28,7 @@ import java.util.Iterator;
 
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReader;
+import javax.imageio.stream.ImageInputStream;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -76,15 +77,15 @@ public class JBIG2Filter implements Filt
 {
 st = (COSStream) 
decodeP.getDictionaryObject(COSName.JBIG2_GLOBALS);
 }
-if(st != null)
+if (st != null)
 {
-reader.setInput(ImageIO.createImageInputStream(new 
SequenceInputStream(st.getFilteredStream(),compressedData)));
-}
-else
-{
-reader.setInput(ImageIO.createImageInputStream(compressedData));
+compressedData = new SequenceInputStream(st.getFilteredStream(),
+compressedData);
 }
+ImageInputStream iis = ImageIO.createImageInputStream(compressedData);
+reader.setInput(iis);
 BufferedImage bi = reader.read(0);
+iis.close();
 reader.dispose();
 if ( bi != null )
 {




svn commit: r1565545 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java

2014-02-06 Thread tilman
Author: tilman
Date: Fri Feb  7 06:14:06 2014
New Revision: 1565545

URL: http://svn.apache.org/r1565545
Log:
PDFBOX-1880: Type 1 Shading must not ignore current transformation matrix
Task #PDFBOX-1880 - [PATCH] Type 1 Shading must not ignore current 
transformation matrix

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java?rev=1565545r1=1565544r2=1565545view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type1ShadingContext.java
 Fri Feb  7 06:14:06 2014
@@ -121,9 +121,11 @@ class Type1ShadingContext implements Pai
 
 try
 {
-// get inverse transform to be independent of current user / 
device space 
+// get inverse transform to be independent of 
+// shading matrix and current user / device space 
 // when handling actual pixels in getRaster()
 rat = matrix.createAffineTransform().createInverse();
+
rat.concatenate(currentTransformationMatrix.createAffineTransform().createInverse());
 rat.concatenate(xform.createInverse());
 }
 catch (NoninvertibleTransformException ex)




svn commit: r1566030 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading: GouraudShadingContext.java GouraudTriangle.java

2014-02-08 Thread tilman
Author: tilman
Date: Sat Feb  8 15:36:50 2014
New Revision: 1566030

URL: http://svn.apache.org/r1566030
Log:
PDFBOX-1887: Bugfixes + Optimization of Gouraud Shading

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudTriangle.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1566030r1=1566029r2=1566030view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 Sat Feb  8 15:36:50 2014
@@ -152,7 +152,7 @@ public abstract class GouraudShadingCont
  *
  * @throws IOException if something went wrong
  */
-protected Vertex readVertex(ImageInputStream input, byte flag, long 
maxSrcCoord, long maxSrcColor, 
+protected Vertex readVertex(ImageInputStream input, byte flag, long 
maxSrcCoord, long maxSrcColor,
 PDRange rangeX, PDRange rangeY, PDRange[] colRangeTab) throws 
IOException
 {
 float[] colorComponentTab = new float[numberOfColorComponents];
@@ -165,7 +165,7 @@ public abstract class GouraudShadingCont
 {
 int color = (int) input.readBits(bitsPerColorComponent);
 colorComponentTab[n] = interpolate(color, maxSrcColor, 
colRangeTab[n].getMin(), colRangeTab[n].getMax());
-LOG.debug(color[ + n + ]:  + color + / + 
String.format(%02x, color) 
+LOG.debug(color[ + n + ]:  + color + / + 
String.format(%02x, color)
 + - color[ + n + ]:  + colorComponentTab[n]);
 }
 return new Vertex(flag, new Point2D.Double(dstX, dstY), 
colorComponentTab);
@@ -248,7 +248,7 @@ public abstract class GouraudShadingCont
  * @param dstMax max dst value
  * @return interpolated value
  */
-private float interpolate(float src, float srcMax, float dstMin, float 
dstMax)
+private float interpolate(float src, long srcMax, float dstMin, float 
dstMax)
 {
 return dstMin + (src * (dstMax - dstMin) / srcMax);
 }
@@ -260,68 +260,68 @@ public abstract class GouraudShadingCont
 public final Raster getRaster(int x, int y, int w, int h)
 {
 WritableRaster raster = 
getColorModel().createCompatibleWritableRaster(w, h);
-if (!triangleList.isEmpty())
+int[] data = new int[w * h * 4];
+for (int row = 0; row  h; row++)
 {
-int[] data = new int[w * h * 4];
-for (int row = 0; row  h; row++)
+for (int col = 0; col  w; col++)
 {
-for (int col = 0; col  w; col++)
+Point2D p = new Point(x + col, y + row);
+GouraudTriangle triangle = null;
+for (GouraudTriangle tryTriangle : triangleList)
 {
-Point2D p = new Point(x + col, y + row);
-float[] values = new float[numberOfColorComponents];
+if (tryTriangle.contains(p))
+{
+triangle = tryTriangle;
+break;
+}
+}
+float[] values;
+if (triangle != null)
+{
+double[] weights = triangle.getWeights(p);
+values = new float[numberOfColorComponents];
+for (int i = 0; i  numberOfColorComponents; ++i)
+{
+values[i] = (float) (triangle.colorA[i] * weights[0]
++ triangle.colorB[i] * weights[1]
++ triangle.colorC[i] * weights[2]);
+}
+}
+else
+{
+if (background != null)
+{
+values = background;
+}
+else
+{
+continue;
+}
+}
 
-//TODO test optmization after ch14.pdf works:
-// check whether point is in combined java area
-for (GouraudTriangle triangle : triangleList)
+//TODO handle function
+// convert color values from shading colorspace to RGB
+if (shadingColorSpace != null)
+{
+if (shadingTinttransform != null)
 {
-if (triangle.contains(p

svn commit: r1566032 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading: GouraudShadingContext.java GouraudTriangle.java

2014-02-08 Thread tilman
Author: tilman
Date: Sat Feb  8 15:41:03 2014
New Revision: 1566032

URL: http://svn.apache.org/r1566032
Log:
PDFBOX-1887: Bugfixes + Optimization of Gouraud Shading

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudTriangle.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1566032r1=1566031r2=1566032view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 Sat Feb  8 15:41:03 2014
@@ -152,7 +152,7 @@ public abstract class GouraudShadingCont
  *
  * @throws IOException if something went wrong
  */
-protected Vertex readVertex(ImageInputStream input, byte flag, long 
maxSrcCoord, long maxSrcColor, 
+protected Vertex readVertex(ImageInputStream input, byte flag, long 
maxSrcCoord, long maxSrcColor,
 PDRange rangeX, PDRange rangeY, PDRange[] colRangeTab) throws 
IOException
 {
 float[] colorComponentTab = new float[numberOfColorComponents];
@@ -165,7 +165,7 @@ public abstract class GouraudShadingCont
 {
 int color = (int) input.readBits(bitsPerColorComponent);
 colorComponentTab[n] = interpolate(color, maxSrcColor, 
colRangeTab[n].getMin(), colRangeTab[n].getMax());
-LOG.debug(color[ + n + ]:  + color + / + 
String.format(%02x, color) 
+LOG.debug(color[ + n + ]:  + color + / + 
String.format(%02x, color)
 + - color[ + n + ]:  + colorComponentTab[n]);
 }
 return new Vertex(flag, new Point2D.Double(dstX, dstY), 
colorComponentTab);
@@ -192,8 +192,6 @@ public abstract class GouraudShadingCont
 // transform from shading to user space
 ctm.createAffineTransform().transform(v.point, v.point);
 // transform from user to device space
-// move the 0,0-reference including the y-translation from 
user to device space
-v.point.setLocation(v.point.getX(), pageHeight - 
v.point.getY());
 xform.transform(v.point, v.point);
 }
 else
@@ -222,6 +220,7 @@ public abstract class GouraudShadingCont
 /**
  * {@inheritDoc}
  */
+@Override
 public void dispose()
 {
 triangleList = null;
@@ -234,6 +233,7 @@ public abstract class GouraudShadingCont
 /**
  * {@inheritDoc}
  */
+@Override
 public final ColorModel getColorModel()
 {
 return outputColorModel;
@@ -248,7 +248,7 @@ public abstract class GouraudShadingCont
  * @param dstMax max dst value
  * @return interpolated value
  */
-private float interpolate(float src, float srcMax, float dstMin, float 
dstMax)
+private float interpolate(float src, long srcMax, float dstMin, float 
dstMax)
 {
 return dstMin + (src * (dstMax - dstMin) / srcMax);
 }
@@ -256,71 +256,72 @@ public abstract class GouraudShadingCont
 /**
  * {@inheritDoc}
  */
+@Override
 public final Raster getRaster(int x, int y, int w, int h)
 {
-float[] values = new float[numberOfColorComponents];
 WritableRaster raster = 
getColorModel().createCompatibleWritableRaster(w, h);
-if (!triangleList.isEmpty())
+int[] data = new int[w * h * 4];
+for (int row = 0; row  h; row++)
 {
-int[] data = new int[w * h * 4];
-for (int row = 0; row  h; row++)
+for (int col = 0; col  w; col++)
 {
-for (int col = 0; col  w; col++)
+Point2D p = new Point(x + col, y + row);
+GouraudTriangle triangle = null;
+for (GouraudTriangle tryTriangle : triangleList)
+{
+if (tryTriangle.contains(p))
+{
+triangle = tryTriangle;
+break;
+}
+}
+float[] values;
+if (triangle != null)
 {
-Point2D p = new Point(x + col, y + row);
+double[] weights = triangle.getWeights(p);
+values = new float[numberOfColorComponents];
+for (int i = 0; i  numberOfColorComponents; ++i)
+{
+values[i] = (float) (triangle.colorA[i] * weights[0

svn commit: r1566051 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java

2014-02-08 Thread tilman
Author: tilman
Date: Sat Feb  8 17:05:17 2014
New Revision: 1566051

URL: http://svn.apache.org/r1566051
Log:
PDFBOX-1887: removed @override because Java 6 which doesn't support @Override 
annotations for methods inherited when implementing an interface

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1566051r1=1566050r2=1566051view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 Sat Feb  8 17:05:17 2014
@@ -220,7 +220,6 @@ public abstract class GouraudShadingCont
 /**
  * {@inheritDoc}
  */
-@Override
 public void dispose()
 {
 triangleList = null;
@@ -233,7 +232,6 @@ public abstract class GouraudShadingCont
 /**
  * {@inheritDoc}
  */
-@Override
 public final ColorModel getColorModel()
 {
 return outputColorModel;
@@ -256,7 +254,6 @@ public abstract class GouraudShadingCont
 /**
  * {@inheritDoc}
  */
-@Override
 public final Raster getRaster(int x, int y, int w, int h)
 {
 WritableRaster raster = 
getColorModel().createCompatibleWritableRaster(w, h);




svn commit: r1566713 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-02-10 Thread tilman
Author: tilman
Date: Mon Feb 10 19:41:16 2014
New Revision: 1566713

URL: http://svn.apache.org/r1566713
Log:
PDFBOX-1897: fix javadoc error

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1566713r1=1566712r2=1566713view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
 Mon Feb 10 19:41:16 2014
@@ -121,7 +121,7 @@ public class ImageIOUtil
  * @param imageFormat the target format (ex. png)
  * @param outputStream the output stream to be used for writing
  * @param resolution resolution to be used when writing the image
- * @param quality quality to be used when compressing the image (0  
quality  1.0f)
+ * @param quality quality to be used when compressing the image (0 lt; 
quality lt; 1.0f)
  * 
  * @return true if the images were produced, false if there was an error
  * @throws IOException if an I/O error occurs




svn commit: r1567317 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java

2014-02-11 Thread tilman
Author: tilman
Date: Tue Feb 11 19:29:33 2014
New Revision: 1567317

URL: http://svn.apache.org/r1567317
Log:
PDFBOX-1909: Close open streams

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java?rev=1567317r1=1567316r2=1567317view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java
 Tue Feb 11 19:29:33 2014
@@ -44,14 +44,13 @@ import org.apache.pdfbox.pdmodel.graphic
 
 /**
  * An image class for CCITT Fax.
- * 
+ *
  * @author a href=b...@benlitchfield.comBen Litchfield/a
  * @author paul king
- * 
+ *
  */
 public class PDCcitt extends PDXObjectImage
 {
-
 private static final ListString FAX_FILTERS = new ArrayListString();
 
 static
@@ -62,7 +61,7 @@ public class PDCcitt extends PDXObjectIm
 
 /**
  * Standard constructor.
- * 
+ *
  * @param ccitt The PDStream that already contains all ccitt information.
  */
 public PDCcitt(PDStream ccitt)
@@ -73,12 +72,11 @@ public class PDCcitt extends PDXObjectIm
 
 /**
  * Construct from a tiff file.
- * 
+ *
  * @param doc The document to create the image as part of.
  * @param raf The random access TIFF file which contains a suitable CCITT 
compressed image
  * @throws IOException If there is an error reading the tiff data.
  */
-
 public PDCcitt(PDDocument doc, RandomAccess raf) throws IOException
 {
 super(new PDStream(doc), tiff);
@@ -103,7 +101,7 @@ public class PDCcitt extends PDXObjectIm
 
 /**
  * Returns an image of the CCITT Fax, or null if TIFFs are not supported. 
(Requires additional JAI Image filters )
- * 
+ *
  * {@inheritDoc}
  */
 public BufferedImage getRGBImage() throws IOException
@@ -182,7 +180,9 @@ public class PDCcitt extends PDXObjectIm
 WritableRaster raster = 
colorModel.createCompatibleWritableRaster(cols, rows);
 DataBufferByte buffer = (DataBufferByte) raster.getDataBuffer();
 bufferData = buffer.getData();
-IOUtils.populateBuffer(stream.getUnfilteredStream(), bufferData);
+InputStream is = stream.getUnfilteredStream();
+IOUtils.populateBuffer(is, bufferData);
+IOUtils.closeQuietly(is);
 BufferedImage image = new BufferedImage(colorModel, raster, false, 
null);
 if (!blackIsOne)
 {
@@ -221,7 +221,7 @@ public class PDCcitt extends PDXObjectIm
 
 /**
  * This writes a tiff to out.
- * 
+ *
  * {@inheritDoc}
  */
 public void write2OutputStream(OutputStream out) throws IOException
@@ -229,11 +229,12 @@ public class PDCcitt extends PDXObjectIm
 // We should use another format than TIFF to get rid of the TiffWrapper
 InputStream data = new 
TiffWrapper(getPDStream().getPartiallyFilteredStream(FAX_FILTERS), 
getCOSStream());
 IOUtils.copy(data, out);
+IOUtils.closeQuietly(data);
 }
 
 /**
  * Extract the ccitt stream from the tiff file.
- * 
+ *
  * @param raf - TIFF File
  * @param os - Stream to write raw ccitt data two
  * @param parms - COSDictionary which the encoding parameters are added to
@@ -296,102 +297,102 @@ public class PDCcitt extends PDXObjectIm
 {
 switch (type)
 {
-case 1:
-{
-val = val  24;
-break; // byte value
+case 1:
+{
+val = val  24;
+break; // byte value
+}
+case 3:
+{
+val = val  16;
+break; // short value
+}
+case 4:
+{
+break; // long value
+}
+default:
+{
+// do nothing
+}
 }
-case 3:
+}
+switch (tag)
+{
+case 256:
 {
-val = val  16;
-break; // short value
+parms.setInt(COSName.COLUMNS, val);
+break;
 }
-case 4:
+case 257

svn commit: r1567327 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java

2014-02-11 Thread tilman
Author: tilman
Date: Tue Feb 11 19:34:40 2014
New Revision: 1567327

URL: http://svn.apache.org/r1567327
Log:
PDFBOX-1909: Close open streams

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java?rev=1567327r1=1567326r2=1567327view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDCcitt.java
 Tue Feb 11 19:34:40 2014
@@ -182,7 +182,9 @@ public class PDCcitt extends PDXObjectIm
 WritableRaster raster = 
colorModel.createCompatibleWritableRaster(cols, rows);
 DataBufferByte buffer = (DataBufferByte) raster.getDataBuffer();
 bufferData = buffer.getData();
-IOUtils.populateBuffer(stream.getUnfilteredStream(), bufferData);
+InputStream is = stream.getUnfilteredStream();
+IOUtils.populateBuffer(is, bufferData);
+IOUtils.closeQuietly(is);
 BufferedImage image = new BufferedImage(colorModel, raster, false, 
null);
 if (!blackIsOne)
 {
@@ -229,6 +231,7 @@ public class PDCcitt extends PDXObjectIm
 // We should use another format than TIFF to get rid of the TiffWrapper
 InputStream data = new 
TiffWrapper(getPDStream().getPartiallyFilteredStream(FAX_FILTERS), 
getCOSStream());
 IOUtils.copy(data, out);
+IOUtils.closeQuietly(data);
 }
 
 /**




svn commit: r1567406 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel: common/PDStream.java font/PDCIDFontType2Font.java font/PDSimpleFont.java graphics/xobject/PDJpeg.java

2014-02-11 Thread tilman
Author: tilman
Date: Tue Feb 11 21:46:19 2014
New Revision: 1567406

URL: http://svn.apache.org/r1567406
Log:
PDFBOX-1909: Close open streams

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpeg.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java?rev=1567406r1=1567405r2=1567406view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/PDStream.java
 Tue Feb 11 21:46:19 2014
@@ -35,6 +35,7 @@ import org.apache.pdfbox.cos.COSStream;
 
 import org.apache.pdfbox.filter.Filter;
 import org.apache.pdfbox.filter.FilterManager;
+import org.apache.pdfbox.io.IOUtils;
 
 import org.apache.pdfbox.pdmodel.PDDocument;
 
@@ -249,21 +250,21 @@ public class PDStream implements COSObje
 InputStream is = stream.getFilteredStream();
 ByteArrayOutputStream os = new ByteArrayOutputStream();
 ListCOSName filters = getFilters();
-COSName nextFilter = null;
 boolean done = false;
 for (int i = 0; i  filters.size()  !done; i++)
 {
-os.reset();
-nextFilter = filters.get(i);
+COSName nextFilter = filters.get(i);
 if (stopFilters.contains(nextFilter.getName()))
 {
 done = true;
-} 
+}
 else
 {
 Filter filter = manager.getFilter(nextFilter);
 filter.decode(is, os, stream, i);
+IOUtils.closeQuietly(is);
 is = new ByteArrayInputStream(os.toByteArray());
+os.reset();
 }
 }
 return is;

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java?rev=1567406r1=1567405r2=1567406view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
 Tue Feb 11 21:46:19 2014
@@ -17,6 +17,7 @@
 package org.apache.pdfbox.pdmodel.font;
 
 import java.io.IOException;
+import java.io.InputStream;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -77,7 +78,9 @@ public class PDCIDFontType2Font extends 
 COSStream stream = (COSStream) map;
 try
 {
-byte[] mapAsBytes = 
IOUtils.toByteArray(stream.getUnfilteredStream());
+InputStream is = stream.getUnfilteredStream();
+byte[] mapAsBytes = IOUtils.toByteArray(is);
+IOUtils.closeQuietly(is);
 int numberOfInts = mapAsBytes.length / 2;
 cid2gid = new int[numberOfInts];
 int offset = 0;

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java?rev=1567406r1=1567405r2=1567406view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDSimpleFont.java
 Tue Feb 11 21:46:19 2014
@@ -285,7 +285,9 @@ public abstract class PDSimpleFont exten
 COSStream encodingStream = (COSStream) encoding;
 try
 {
-cmap = parseCmap(null, 
encodingStream.getUnfilteredStream());
+InputStream is = encodingStream.getUnfilteredStream();
+cmap = parseCmap(null, is);
+IOUtils.closeQuietly(is);
 }
 catch (IOException exception)
 {
@@ -351,7 +353,9 @@ public abstract class PDSimpleFont exten
 {
 try
 {
-toUnicodeCmap = parseCmap(resourceRootCMAP, ((COSStream) 
toUnicode).getUnfilteredStream());
+InputStream is = ((COSStream) 
toUnicode).getUnfilteredStream

svn commit: r1569063 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading: GouraudShadingContext.java GouraudTriangle.java Type4ShadingContext.java Type5ShadingCon

2014-02-17 Thread tilman
Author: tilman
Date: Mon Feb 17 17:55:35 2014
New Revision: 1569063

URL: http://svn.apache.org/r1569063
Log:
PDFBOX-1924: Gouraud shading: detect empty triangles

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudTriangle.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type4ShadingContext.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/Type5ShadingContext.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java?rev=1569063r1=1569062r2=1569063view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/GouraudShadingContext.java
 Mon Feb 17 17:55:35 2014
@@ -245,81 +245,84 @@ public abstract class GouraudShadingCont
 {
 WritableRaster raster = 
getColorModel().createCompatibleWritableRaster(w, h);
 int[] data = new int[w * h * 4];
-for (int row = 0; row  h; row++)
+if (!triangleList.isEmpty() || background != null)
 {
-for (int col = 0; col  w; col++)
+for (int row = 0; row  h; row++)
 {
-Point2D p = new Point(x + col, y + row);
-GouraudTriangle triangle = null;
-for (GouraudTriangle tryTriangle : triangleList)
+for (int col = 0; col  w; col++)
 {
-if (tryTriangle.contains(p))
+Point2D p = new Point(x + col, y + row);
+GouraudTriangle triangle = null;
+for (GouraudTriangle tryTriangle : triangleList)
 {
-triangle = tryTriangle;
-break;
-}
-}
-float[] values;
-if (triangle != null)
-{
-double[] weights = triangle.getWeights(p);
-values = new float[numberOfColorComponents];
-for (int i = 0; i  numberOfColorComponents; ++i)
-{
-values[i] = (float) (triangle.colorA[i] * weights[0]
-+ triangle.colorB[i] * weights[1]
-+ triangle.colorC[i] * weights[2]);
+if (tryTriangle.contains(p))
+{
+triangle = tryTriangle;
+break;
+}
 }
-}
-else
-{
-if (background != null)
+float[] values;
+if (triangle != null)
 {
-values = background;
+double[] weights = triangle.getWeights(p);
+values = new float[numberOfColorComponents];
+for (int i = 0; i  numberOfColorComponents; ++i)
+{
+values[i] = (float) (triangle.colorA[i] * 
weights[0]
++ triangle.colorB[i] * weights[1]
++ triangle.colorC[i] * weights[2]);
+}
 }
 else
 {
-continue;
-}
-}
-
-if (hasFunction)
-{
-try
-{
-values = gouraudShadingType.evalFunction(values);
-}
-catch (IOException exception)
-{
-LOG.error(error while processing a function, 
exception);
+if (background != null)
+{
+values = background;
+}
+else
+{
+continue;
+}
 }
-}   
 
-// convert color values from shading colorspace to RGB
-if (shadingColorSpace != null)
-{
-if (shadingTinttransform != null)
+if (hasFunction)
 {
 try

svn commit: r1571090 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-02-23 Thread tilman
Author: tilman
Date: Sun Feb 23 20:54:52 2014
New Revision: 1571090

URL: http://svn.apache.org/r1571090
Log:
PDFBOX-1734: fix change that broke JPEG compression

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1571090r1=1571089r2=1571090view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
 Sun Feb 23 20:54:52 2014
@@ -185,7 +185,7 @@ public class ImageIOUtil
 
writerParams.setCompressionType(writerParams.getCompressionTypes()[0]);
 }
 }
-writerParams.setCompressionQuality(0);
+writerParams.setCompressionQuality(quality);
 }
 IIOMetadata meta = createMetadata(image, imageWriter, 
writerParams, resolution);
 if (meta != null)




svn commit: r1571089 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-02-23 Thread tilman
Author: tilman
Date: Sun Feb 23 20:54:22 2014
New Revision: 1571089

URL: http://svn.apache.org/r1571089
Log:
PDFBOX-1734: fix change that broke JPEG compression

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1571089r1=1571088r2=1571089view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
Sun Feb 23 20:54:22 2014
@@ -185,7 +185,7 @@ public class ImageIOUtil
 
writerParams.setCompressionType(writerParams.getCompressionTypes()[0]);
 }
 }
-writerParams.setCompressionQuality(0);
+writerParams.setCompressionQuality(quality);
 }
 IIOMetadata meta = createMetadata(image, imageWriter, 
writerParams, resolution);
 if (meta != null)




svn commit: r1571801 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: filter/LZWDictionary.java filter/LZWFilter.java filter/LZWNode.java io/NBitInputStream.java io/NBitOutputStream.java

2014-02-25 Thread tilman
Author: tilman
Date: Tue Feb 25 19:44:10 2014
New Revision: 1571801

URL: http://svn.apache.org/r1571801
Log:
PDFBOX-1147: rewrote LZW filter after failure to find bug; PDFBOX-205: catch 
EOF if EOD marker is missing; delete files that are no longer needed.

Removed:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWDictionary.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWNode.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/NBitInputStream.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/io/NBitOutputStream.java
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java?rev=1571801r1=1571800r2=1571801view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java 
Tue Feb 25 19:44:10 2014
@@ -1,10 +1,9 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the License); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
  *  http://www.apache.org/licenses/LICENSE-2.0
  *
@@ -16,183 +15,259 @@
  */
 package org.apache.pdfbox.filter;
 
-import java.io.ByteArrayOutputStream;
+import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.PushbackInputStream;
-import java.io.StreamCorruptedException;
-
+import java.util.ArrayList;
+import java.util.Arrays;
+import javax.imageio.stream.MemoryCacheImageInputStream;
+import javax.imageio.stream.MemoryCacheImageOutputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSDictionary;
 
-import org.apache.pdfbox.io.NBitInputStream;
-import org.apache.pdfbox.io.NBitOutputStream;
-
 /**
- * This is the used for the LZWDecode filter.
  *
- * @author Ben Litchfield
+ * This is the filter used for the LZWDecode filter.
+ *
+ * @author a href=mailto:b...@benlitchfield.com;Ben Litchfield/a
+ * @author Tilman Hausherr
  */
-final class LZWFilter extends Filter
+public class LZWFilter extends Filter
 {
+/**
+ * Log instance.
+ */
+private static final Log LOG = LogFactory.getLog(LZWFilter.class);
+
+/**
+ * The LZW clear table code.
+ */
 public static final long CLEAR_TABLE = 256;
+
+/**
+ * The LZW end of data code.
+ */
 public static final long EOD = 257;
 
+/**
+ * The LZW code table.
+ */
+private ArrayListbyte[] codeTable = null;
+
+/**
+ * {@inheritDoc}
+ */
 @Override
 protected final DecodeResult decode(InputStream encoded, OutputStream 
decoded,
- COSDictionary parameters) throws 
IOException
+COSDictionary parameters) throws IOException
 {
-//log.debug(decode());
-NBitInputStream in = new NBitInputStream(encoded);
-in.setBitsInChunk(9);
-LZWDictionary dic = new LZWDictionary();
-byte firstByte = 0;
-long nextCommand;
-while ((nextCommand = in.read()) != EOD)
-{
-// log.debug(decode - nextCommand= + nextCommand + , 
bitsInChunk:  + in.getBitsInChunk());
+codeTable = null;
+int chunk = 9;
+MemoryCacheImageInputStream in = new 
MemoryCacheImageInputStream(encoded);
+long nextCommand = 0;
+long prevCommand = -1;
 
-if (nextCommand == CLEAR_TABLE)
-{
-in.setBitsInChunk(9);
-dic = new LZWDictionary();
-}
-else
+try
+{
+while ((nextCommand = in.readBits(chunk)) != EOD)
 {
-byte[] data = dic.getData(nextCommand);
-if (data == null)
-{
-dic.visit(firstByte);
-data = dic.getData(nextCommand);
-dic.clear();
-}
-if (data == null)
-{
-throw new StreamCorruptedException(Error: data is null);
-}
-dic.visit(data);
-
-//log.debug

svn commit: r1571806 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox: filter/LZWDictionary.java filter/LZWFilter.java filter/LZWNode.java io/NBitInputStream.java io/NBitOutputStream.j

2014-02-25 Thread tilman
Author: tilman
Date: Tue Feb 25 19:56:41 2014
New Revision: 1571806

URL: http://svn.apache.org/r1571806
Log:
PDFBOX-1147: rewrote LZW filter after failure to find bug; PDFBOX-205: catch 
EOF if EOD marker is missing; delete files that are no longer needed.

Removed:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWDictionary.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWNode.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/io/NBitInputStream.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/io/NBitOutputStream.java
Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java?rev=1571806r1=1571805r2=1571806view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 Tue Feb 25 19:56:41 2014
@@ -1,10 +1,9 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the License); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
  *
  *  http://www.apache.org/licenses/LICENSE-2.0
  *
@@ -16,196 +15,257 @@
  */
 package org.apache.pdfbox.filter;
 
-import java.io.ByteArrayOutputStream;
+import java.io.EOFException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
-import java.io.PushbackInputStream;
-import java.io.StreamCorruptedException;
-
+import java.util.ArrayList;
+import java.util.Arrays;
+import javax.imageio.stream.MemoryCacheImageInputStream;
+import javax.imageio.stream.MemoryCacheImageOutputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSDictionary;
 
-import org.apache.pdfbox.io.NBitInputStream;
-import org.apache.pdfbox.io.NBitOutputStream;
-
 /**
- * This is the used for the LZWDecode filter.
+ *
+ * This is the filter used for the LZWDecode filter.
  *
  * @author a href=mailto:b...@benlitchfield.com;Ben Litchfield/a
- * @version $Revision: 1.15 $
+ * @author Tilman Hausherr
  */
 public class LZWFilter implements Filter
 {
+/**
+ * Log instance.
+ */
+private static final Log LOG = LogFactory.getLog(LZWFilter.class);
 
 /**
  * The LZW clear table code.
  */
 public static final long CLEAR_TABLE = 256;
+
 /**
  * The LZW end of data code.
  */
 public static final long EOD = 257;
 
 /**
+ * The LZW code table.
+ */
+private ArrayListbyte[] codeTable = null;
+
+/**
  * {@inheritDoc}
  */
-public void decode( InputStream compressedData, OutputStream result, 
COSDictionary options, int filterIndex ) 
-throws IOException
+public void decode(InputStream compressedData, OutputStream result, 
COSDictionary options, int filterIndex)
+throws IOException
 {
-//log.debug(decode( ));
-NBitInputStream in = null;
-in = new NBitInputStream( compressedData );
-in.setBitsInChunk( 9 );
-LZWDictionary dic = new LZWDictionary();
-byte firstByte = 0;
+codeTable = null;
+int chunk = 9;
+MemoryCacheImageInputStream in = new 
MemoryCacheImageInputStream(compressedData);
 long nextCommand = 0;
-while( (nextCommand = in.read() ) != EOD )
-{
-// log.debug( decode - nextCommand= + nextCommand + , 
bitsInChunk:  + in.getBitsInChunk());
+long prevCommand = -1;
 
-if( nextCommand == CLEAR_TABLE )
-{
-in.setBitsInChunk( 9 );
-dic = new LZWDictionary();
-}
-else
+try
+{
+while ((nextCommand = in.readBits(chunk)) != EOD)
 {
-byte[] data = dic.getData( nextCommand );
-if( data == null )
+if (nextCommand == CLEAR_TABLE)
 {
-dic.visit( firstByte );
-data = dic.getData( nextCommand );
-dic.clear();
-}
-if( data == null

svn commit: r1571822 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

2014-02-25 Thread tilman
Author: tilman
Date: Tue Feb 25 21:02:55 2014
New Revision: 1571822

URL: http://svn.apache.org/r1571822
Log:
PDFBOX-1147: code modified for JDK5

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java?rev=1571822r1=1571821r2=1571822view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 Tue Feb 25 21:02:55 2014
@@ -88,7 +88,9 @@ public class LZWFilter implements Filter
 if (prevCommand != -1)
 {
 data = codeTable.get((int) prevCommand);
-byte[] newData = Arrays.copyOf(data, data.length + 
1);
+byte[] newData = new byte[data.length + 1];
+for (int i = 0; i  data.length; ++i)
+newData[i] = data[i];
 newData[data.length] = firstByte;
 codeTable.add(newData);
 }
@@ -96,7 +98,9 @@ public class LZWFilter implements Filter
 else
 {
 byte[] data = codeTable.get((int) prevCommand);
-byte[] newData = Arrays.copyOf(data, data.length + 1);
+byte[] newData = new byte[data.length + 1];
+for (int i = 0; i  data.length; ++i)
+newData[i] = data[i];
 newData[data.length] = data[0];
 result.write(newData);
 codeTable.add(newData);
@@ -155,7 +159,10 @@ public class LZWFilter implements Filter
 }
 else
 {
-inputPattern = Arrays.copyOf(inputPattern, inputPattern.length 
+ 1);
+byte[] inputPatternCopy = new byte[inputPattern.length + 1];
+for (int i = 0; i  inputPattern.length; ++i)
+inputPatternCopy[i] = inputPattern[i];
+inputPattern = inputPatternCopy;
 inputPattern[inputPattern.length - 1] = by;
 int newFoundCode = findPatternCode(codeTable, inputPattern);
 if (newFoundCode == -1)




svn commit: r1573195 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font: PDCIDFontType0Font.java PDCIDFontType2Font.java PDTrueTypeFont.java PDType1Font.java

2014-03-01 Thread tilman
Author: tilman
Date: Sat Mar  1 16:48:54 2014
New Revision: 1573195

URL: http://svn.apache.org/r1573195
Log:
PDFBOX-1664: check for null pointer

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java?rev=1573195r1=1573194r2=1573195view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType0Font.java
 Sat Mar  1 16:48:54 2014
@@ -64,8 +64,11 @@ public class PDCIDFontType0Font extends 
 public Font getawtFont() throws IOException
 {
 PDFontDescriptor fd = getFontDescriptor();
-Font awtFont = FontManager.getAwtFont(fd.getFontName());
-
+Font awtFont = null;
+if (fd.getFontName() != null)
+{
+awtFont = FontManager.getAwtFont(fd.getFontName());
+}
 if (awtFont == null  fd instanceof PDFontDescriptorDictionary) {
 PDFontDescriptorDictionary fdd = (PDFontDescriptorDictionary) fd;
 if (fdd.getFontFile3() != null) {

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java?rev=1573195r1=1573194r2=1573195view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDCIDFontType2Font.java
 Sat Mar  1 16:48:54 2014
@@ -87,7 +87,10 @@ public class PDCIDFontType2Font extends 
 }
 if (awtFont == null)
 {
-awtFont = FontManager.getAwtFont(fd.getFontName());
+if (fd.getFontName() != null)
+{
+awtFont = FontManager.getAwtFont(fd.getFontName());
+}
 if (awtFont != null)
 {
 LOG.info(Using font +awtFont.getName()+  instead);

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java?rev=1573195r1=1573194r2=1573195view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDTrueTypeFont.java
 Sat Mar  1 16:48:54 2014
@@ -468,7 +468,10 @@ public class PDTrueTypeFont extends PDSi
 }
 if (awtFont == null)
 {
-awtFont = FontManager.getAwtFont(fd.getFontName());
+if (fd.getFontName() != null)
+{
+awtFont = FontManager.getAwtFont(fd.getFontName());
+}
 if (awtFont != null)
 {
 log.info(Using font +awtFont.getName()+  instead);
@@ -479,7 +482,10 @@ public class PDTrueTypeFont extends PDSi
 else
 {
 // check if the font is part of our environment
-awtFont = FontManager.getAwtFont(fd.getFontName());
+if (fd.getFontName() != null)
+{
+awtFont = FontManager.getAwtFont(fd.getFontName());
+}
 if (awtFont == null)
 {
 log.info(Can't find the specified font  + 
fd.getFontName() );

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java?rev=1573195r1=1573194r2=1573195view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType1Font.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font

svn commit: r1574180 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter: FilterManager.java JPXFilter.java

2014-03-04 Thread tilman
Author: tilman
Date: Tue Mar  4 19:34:50 2014
New Revision: 1574180

URL: http://svn.apache.org/r1574180
Log:
PDFBOX-52: use JPXFilter instead of DCTFilter

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java?rev=1574180r1=1574179r2=1574180view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/FilterManager.java
 Tue Mar  4 19:34:50 2014
@@ -32,7 +32,7 @@ import org.apache.pdfbox.cos.COSName;
  */
 public class FilterManager
 {
-private MapCOSName, Filter filters = new HashMapCOSName, Filter();
+private final MapCOSName, Filter filters = new HashMapCOSName, 
Filter();
 
 /**
  * Constructor.
@@ -40,7 +40,6 @@ public class FilterManager
 public FilterManager()
 {
 Filter flateFilter = new FlateFilter();
-Filter dctFilter = new DCTFilter();
 Filter ccittFaxFilter = new CCITTFaxDecodeFilter();
 Filter lzwFilter = new LZWFilter();
 Filter asciiHexFilter = new ASCIIHexFilter();
@@ -52,8 +51,8 @@ public class FilterManager
 
 addFilter( COSName.FLATE_DECODE, flateFilter );
 addFilter( COSName.FLATE_DECODE_ABBREVIATION, flateFilter );
-addFilter( COSName.DCT_DECODE, dctFilter );
-addFilter( COSName.DCT_DECODE_ABBREVIATION, dctFilter );
+addFilter( COSName.DCT_DECODE, jpxFilter);
+addFilter( COSName.DCT_DECODE_ABBREVIATION, jpxFilter);
 addFilter( COSName.CCITTFAX_DECODE, ccittFaxFilter );
 addFilter( COSName.CCITTFAX_DECODE_ABBREVIATION, ccittFaxFilter );
 addFilter( COSName.LZW_DECODE, lzwFilter );
@@ -66,8 +65,7 @@ public class FilterManager
 addFilter( COSName.RUN_LENGTH_DECODE_ABBREVIATION, runLengthFilter );
 addFilter( COSName.CRYPT, cryptFilter );
 addFilter( COSName.JPX_DECODE, jpxFilter );
-addFilter( COSName.JBIG2_DECODE, jbig2Filter );
-
+addFilter( COSName.JBIG2_DECODE, jbig2Filter );
 }
 
 /**

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java?rev=1574180r1=1574179r2=1574180view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JPXFilter.java
 Tue Mar  4 19:34:50 2014
@@ -69,7 +69,26 @@ public class JPXFilter implements Filter
 options.setInt(COSName.BITS_PER_COMPONENT, 
colorModel.getPixelSize() / colorModel.getNumComponents());
 options.setInt(COSName.HEIGHT, bi.getHeight());
 options.setInt(COSName.WIDTH, bi.getWidth());
-result.write(((DataBufferByte) dBuf).getData());
+
+if (bi.getType() == BufferedImage.TYPE_3BYTE_BGR)
+{
+// PDFBOX-52
+byte[] byteBuffer = ((DataBufferByte) dBuf).getData();
+for (int i = 0; i  byteBuffer.length; i += 3)
+{
+//BGR
+//to
+//RGB
+byte tmp0 = byteBuffer[i];
+byteBuffer[i] = byteBuffer[i + 2];
+byteBuffer[i + 2] = tmp0;
+}
+result.write(byteBuffer);
+}
+else
+{
+result.write(((DataBufferByte) dBuf).getData());
+}
 }
 else
 {




svn commit: r1574653 - in /pdfbox/branches/1.8/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType4.java test/java/org/apache/pdfbox/pdmodel/common/function/TestPDFunctionTy

2014-03-05 Thread tilman
Author: tilman
Date: Wed Mar  5 20:39:29 2014
New Revision: 1574653

URL: http://svn.apache.org/r1574653
Log:
PDFBOX-1876: Fix Type 4 Function used in PDFBOX-1876 and its test

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType4.java

pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/TestPDFunctionType4.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType4.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType4.java?rev=1574653r1=1574652r2=1574653view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType4.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/function/PDFunctionType4.java
 Wed Mar  5 20:39:29 2014
@@ -67,9 +67,8 @@ public class PDFunctionType4 extends PDF
 public float[] eval(float[] input) throws IOException
 {
 //Setup the input values
-int numberOfInputValues = input.length;
 ExecutionContext context = new ExecutionContext(OPERATORS);
-for (int i = numberOfInputValues - 1; i = 0; i--)
+for (int i = 0; i  input.length; i++)
 {
 PDRange domain = getDomainForInput(i);
 float value = clipToRange(input[i], domain.getMin(), 
domain.getMax());

Modified: 
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/TestPDFunctionType4.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/TestPDFunctionType4.java?rev=1574653r1=1574652r2=1574653view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/TestPDFunctionType4.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/function/TestPDFunctionType4.java
 Wed Mar  5 20:39:29 2014
@@ -98,19 +98,16 @@ public class TestPDFunctionType4 extends
 public void testFunctionArgumentOrder() throws Exception
 {
 String functionText = { pop };
-//pops the top-most argument and returns the second as is.
+// pops an argument (2nd) and returns the next argument (1st)
 
 PDFunctionType4 function = createFunction(functionText,
 new float[] {-1.0f, 1.0f, -1.0f, 1.0f},
 new float[] {-1.0f, 1.0f});
 
-COSArray input = new COSArray();
-input.setFloatArray(new float[] {-0.7f, 0.0f});
-COSArray output = function.eval(input);
+float[] input = new float[] {-0.7f, 0.0f };
+float[] output = function.eval(input);
 
-assertEquals(1, output.size());
-assertEquals(0.0f, ((COSFloat)output.get(0)).floatValue(), 0.0001f);
-//TODO not sure if this is really correct
+assertEquals(1, output.length);
+assertEquals(-0.7f, output[0], 0.0001f);
 }
-
 }




svn commit: r1574961 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java

2014-03-06 Thread tilman
Author: tilman
Date: Thu Mar  6 17:01:34 2014
New Revision: 1574961

URL: http://svn.apache.org/r1574961
Log:
PDFBOX-1931: fix regression introduced in rev. 1562921, revert 2 lines to use 
Matrix.getXScale() as before, instead of AffineTransform.getScaleX() because 
its different

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java?rev=1574961r1=1574960r2=1574961view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/RadialShadingContext.java
 Thu Mar  6 17:01:34 2014
@@ -85,8 +85,8 @@ public class RadialShadingContext implem
 AffineTransform at = ctm.createAffineTransform();
 at.transform(coords, 0, coords, 0, 1);
 at.transform(coords, 3, coords, 3, 1);
-coords[2] *= at.getScaleX();
-coords[5] *= at.getScaleX();
+coords[2] *= ctm.getXScale();
+coords[5] *= ctm.getXScale();
 }
 // transform coords to device space
 xform.transform(coords, 0, coords, 0, 1);




svn commit: r1575426 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java

2014-03-07 Thread tilman
Author: tilman
Date: Fri Mar  7 22:02:25 2014
New Revision: 1575426

URL: http://svn.apache.org/r1575426
Log:
PDFBOX-1164: add heuristic by Timo Boehme to detect wrongly assumed end of 
inline image 

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java?rev=1575426r1=1575425r2=1575426view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
 Fri Mar  7 22:02:25 2014
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdfparser;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.PushbackInputStream;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -46,6 +47,8 @@ public class PDFStreamParser extends Bas
 {
 private ListObject streamObjects = new ArrayListObject( 100 );
 private RandomAccess file;
+private final intmaxBinCharTestLength = 5;
+private final byte[] binCharTestArr = new byte[maxBinCharTestLength];
 
 /**
  * Constructor that takes a stream to parse.
@@ -391,10 +394,11 @@ public class PDFStreamParser extends Bas
 // PDF spec is kinda unclear about this. Should a whitespace
 // always appear before EI? Not sure, so that we just read
 // until EIwhitespace.
-// Be aware not all kind of whitespaces are allowed here. see 
PDFBOX1561
+// Be aware not all kind of whitespaces are allowed here. see 
PDFBOX-1561
 while( !(lastByte == 'E' 
  currentByte == 'I' 
- isSpaceOrReturn()) 
+ isSpaceOrReturn() 
+ hasNoFollowingBinData( pdfSource )) 
!pdfSource.isEOF() )
 {
 imageData.write( lastByte );
@@ -436,6 +440,37 @@ public class PDFStreamParser extends Bas
 }
 
 /**
+ * Looks up next 5 bytes if they contain only ASCII characters (no control
+ * sequences etc.).
+ *
+ * @return codetrue/code if next 5 bytes are printable ASCII 
characters,
+ * otherwise codefalse/code
+ */
+private boolean hasNoFollowingBinData(final PushbackInputStream pdfSource) 
+throws IOException
+{
+// as suggested in PDFBOX-1164
+final int readBytes = pdfSource.read(binCharTestArr, 0, 
maxBinCharTestLength);
+boolean noBinData = true;
+
+if (readBytes  0)
+{
+for (int bIdx = 0; bIdx  readBytes; bIdx++)
+{
+final byte b = binCharTestArr[bIdx];
+if ((b  0x09) || ((b  0x0a)  (b  0x20)  (b != 0x0d)))
+{
+// control character or  0x7f - we have binary data
+noBinData = false;
+break;
+}
+}
+pdfSource.unread(binCharTestArr, 0, readBytes);
+}
+return noBinData;
+}
+
+/**
  * This will read an operator from the stream.
  *
  * @return The operator that was read from the stream.




svn commit: r1575427 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java

2014-03-07 Thread tilman
Author: tilman
Date: Fri Mar  7 22:03:59 2014
New Revision: 1575427

URL: http://svn.apache.org/r1575427
Log:
PDFBOX-1164: add heuristic by Timo Boehme to detect wrongly assumed end of 
inline image

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java?rev=1575427r1=1575426r2=1575427view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/PDFStreamParser.java
 Fri Mar  7 22:03:59 2014
@@ -19,6 +19,7 @@ package org.apache.pdfbox.pdfparser;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.PushbackInputStream;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
@@ -47,6 +48,8 @@ public class PDFStreamParser extends Bas
 {
 private ListObject streamObjects = new ArrayListObject( 100 );
 private RandomAccess file;
+private final intmaxBinCharTestLength = 5;
+private final byte[] binCharTestArr = new byte[maxBinCharTestLength];
 
 /**
  * Constructor that takes a stream to parse.
@@ -393,7 +396,8 @@ public class PDFStreamParser extends Bas
 // Be aware not all kind of whitespaces are allowed here. see 
PDFBOX1561
 while( !(lastByte == 'E' 
  currentByte == 'I' 
- isSpaceOrReturn()) 
+ isSpaceOrReturn() 
+ hasNoFollowingBinData( pdfSource )) 
!pdfSource.isEOF() )
 {
 imageData.write( lastByte );
@@ -435,6 +439,37 @@ public class PDFStreamParser extends Bas
 }
 
 /**
+ * Looks up next 5 bytes if they contain only ASCII characters (no control
+ * sequences etc.).
+ *
+ * @return codetrue/code if next 5 bytes are printable ASCII 
characters,
+ * otherwise codefalse/code
+ */
+private boolean hasNoFollowingBinData(final PushbackInputStream pdfSource) 
+throws IOException
+{
+// as suggested in PDFBOX-1164
+final int readBytes = pdfSource.read(binCharTestArr, 0, 
maxBinCharTestLength);
+boolean noBinData = true;
+
+if (readBytes  0)
+{
+for (int bIdx = 0; bIdx  readBytes; bIdx++)
+{
+final byte b = binCharTestArr[bIdx];
+if ((b  0x09) || ((b  0x0a)  (b  0x20)  (b != 0x0d)))
+{
+// control character or  0x7f - we have binary data
+noBinData = false;
+break;
+}
+}
+pdfSource.unread(binCharTestArr, 0, readBytes);
+}
+return noBinData;
+}
+
+/**
  * This will read an operator from the stream.
  *
  * @return The operator that was read from the stream.




svn commit: r1575539 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java

2014-03-08 Thread tilman
Author: tilman
Date: Sat Mar  8 13:16:35 2014
New Revision: 1575539

URL: http://svn.apache.org/r1575539
Log:
PDFBOX-1966: Type 1, 4 and 5 shadings for shFill(); use transparency for type 6 
and 7; DRY principle will be applied later

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java?rev=1575539r1=1575538r2=1575539view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
 Sat Mar  8 13:16:35 2014
@@ -42,11 +42,17 @@ import org.apache.pdfbox.pdmodel.common.
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.graphics.PDGraphicsState;
 import org.apache.pdfbox.pdmodel.graphics.PDShading;
-import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType1;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType2;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType3;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType4;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType5;
+import org.apache.pdfbox.pdmodel.graphics.shading.Type1ShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
 import org.apache.pdfbox.pdmodel.graphics.shading.RadialShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.Type4ShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.Type5ShadingPaint;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream;
@@ -571,9 +577,8 @@ public class PageDrawer extends PDFStrea
 switch (shadingType)
 {
 case 1:
-// TODO
-LOG.debug(Function based shading not yet supported);
-break;
+paint = new Type1ShadingPaint((PDShadingType1)shading, ctm, 
pageSize.height);
+break;
 case 2:
 paint = new AxialShadingPaint((PDShadingType2)shading, ctm, 
pageSize.height);
 break;
@@ -581,11 +586,16 @@ public class PageDrawer extends PDFStrea
 paint = new RadialShadingPaint((PDShadingType3)shading, ctm, 
pageSize.height);
 break;
 case 4:
+paint = new Type4ShadingPaint((PDShadingType4)shading, ctm, 
pageSize.height);
+break;
 case 5:
+paint = new Type5ShadingPaint((PDShadingType5)shading, ctm, 
pageSize.height);
+break;
 case 6:
 case 7:
 // TODO
 LOG.debug(Shading type +shadingType+ not yet supported);
+paint = new Color(0, 0, 0, 0); // transparent
 break;
 default:
 throw new IOException(Invalid ShadingType  + shadingType +  
for Shading  + shadingName);




svn commit: r1575540 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

2014-03-08 Thread tilman
Author: tilman
Date: Sat Mar  8 13:17:17 2014
New Revision: 1575540

URL: http://svn.apache.org/r1575540
Log:
PDFBOX-1966: Type 1, 4 and 5 shadings for shFill(); use transparency for type 6 
and 7; DRY principle will be applied later

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java?rev=1575540r1=1575539r2=1575540view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java 
Sat Mar  8 13:17:17 2014
@@ -71,9 +71,15 @@ import org.apache.pdfbox.pdmodel.graphic
 import org.apache.pdfbox.pdmodel.graphics.pattern.PDTilingPattern;
 import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShading;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType1;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType2;
 import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType3;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType4;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType5;
 import org.apache.pdfbox.pdmodel.graphics.shading.RadialShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.Type1ShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.Type4ShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.Type5ShadingPaint;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream;
@@ -836,8 +842,7 @@ public class PageDrawer extends PDFStrea
 switch (shadingType)
 {
 case 1:
-// TODO
-LOG.debug(Function based shading not yet supported);
+paint = new Type1ShadingPaint((PDShadingType1) shading, ctm, 
pageHeight);
 break;
 case 2:
 paint = new AxialShadingPaint((PDShadingType2) shading, ctm, 
pageHeight);
@@ -846,11 +851,16 @@ public class PageDrawer extends PDFStrea
 paint = new RadialShadingPaint((PDShadingType3) shading, ctm, 
pageHeight);
 break;
 case 4:
+paint = new Type4ShadingPaint((PDShadingType4) shading, ctm, 
pageHeight);
+break;
 case 5:
+paint = new Type5ShadingPaint((PDShadingType5) shading, ctm, 
pageHeight);
+break;
 case 6:
 case 7:
 // TODO
 LOG.debug(Shading type  + shadingType +  not yet supported);
+paint = new Color(0, 0, 0, 0); // transparent
 break;
 default:
 throw new IOException(Invalid ShadingType  + shadingType +  for 
Shading  + shadingName);




svn commit: r1575682 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java

2014-03-09 Thread tilman
Author: tilman
Date: Sun Mar  9 09:07:31 2014
New Revision: 1575682

URL: http://svn.apache.org/r1575682
Log:
PDFBOX-1442: clear cached paint value

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java?rev=1575682r1=1575681r2=1575682view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDColorState.java
 Sun Mar  9 09:07:31 2014
@@ -275,8 +275,9 @@ public class PDColorState implements Clo
 public void setColorSpace(PDColorSpace value)
 {
 colorSpace = value;
-// Clear color cache and current pattern
+// Clear color/paint cache and current pattern
 color = null;
+paint = null;
 pattern = null;
 }
 
@@ -308,8 +309,9 @@ public class PDColorState implements Clo
 public void setColorSpaceValue(float[] value)
 {
 colorSpaceValue.setFloatArray(value);
-// Clear color cache and current pattern
+// Clear color/paint cache and current pattern
 color = null;
+paint = null;
 pattern = null;
 }
 
@@ -331,8 +333,9 @@ public class PDColorState implements Clo
 public void setPattern(PDPatternResources patternValue)
 {
 pattern = patternValue;
-// Clear color cache
+// Clear color/paint cache
 color = null;
+paint = null;
 }
 
 }




svn commit: r1576067 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-03-10 Thread tilman
Author: tilman
Date: Mon Mar 10 20:20:38 2014
New Revision: 1576067

URL: http://svn.apache.org/r1576067
Log:
PDFBOX-1963: put setCompressionMode() at the correct place

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1576067r1=1576066r2=1576067view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
Mon Mar 10 20:20:38 2014
@@ -136,6 +136,7 @@ public class ImageIOUtil
 // compression
 if (param.canWriteCompressed())
 {
+param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
 if (formatName.toLowerCase().startsWith(tif))
 {
 // TIFF compression
@@ -144,7 +145,6 @@ public class ImageIOUtil
 else
 {
 // JPEG, PNG compression
-param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
 param.setCompressionType(param.getCompressionTypes()[0]);
 param.setCompressionQuality(quality);
 }




svn commit: r1576071 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/TIFFUtil.java

2014-03-10 Thread tilman
Author: tilman
Date: Mon Mar 10 20:36:32 2014
New Revision: 1576071

URL: http://svn.apache.org/r1576071
Log:
PDFBOX-1963: fix if statement that had switched branches

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/TIFFUtil.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/TIFFUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/TIFFUtil.java?rev=1576071r1=1576070r2=1576071view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/TIFFUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/TIFFUtil.java Mon 
Mar 10 20:36:32 2014
@@ -25,9 +25,7 @@ import javax.imageio.metadata.IIOMetadat
 import javax.imageio.metadata.IIOMetadataNode;
 import javax.xml.transform.OutputKeys;
 import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
 import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.TransformerFactoryConfigurationError;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 import java.awt.image.BufferedImage;
@@ -87,15 +85,15 @@ class TIFFUtil
 IIOMetadataNode ifd;
 if (root.getElementsByTagName(TIFFIFD).getLength() == 0)
 {
-ifd = 
(IIOMetadataNode)root.getElementsByTagName(TIFFIFD).item(0);
-}
-else
-{
 ifd = new IIOMetadataNode(TIFFIFD);
 ifd.setAttribute(tagSets,
  
com.sun.media.imageio.plugins.tiff.BaselineTIFFTagSet);
 root.appendChild(ifd);
 }
+else
+{
+ifd = 
(IIOMetadataNode)root.getElementsByTagName(TIFFIFD).item(0);
+}
 
 // standard metadata does not work, so we set the DPI manually
 ifd.appendChild(createRationalField(282, XResolution, dpi, 1));




svn commit: r1576083 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-03-10 Thread tilman
Author: tilman
Date: Mon Mar 10 20:59:37 2014
New Revision: 1576083

URL: http://svn.apache.org/r1576083
Log:
PDFBOX-1963: fix PNG image resolution

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1576083r1=1576082r2=1576083view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
Mon Mar 10 20:59:37 2014
@@ -31,8 +31,6 @@ import javax.imageio.metadata.IIOInvalid
 import javax.imageio.metadata.IIOMetadata;
 import javax.imageio.metadata.IIOMetadataNode;
 import javax.imageio.stream.ImageOutputStream;
-
-import org.apache.pdfbox.filter.MissingImageReaderException;
 import org.w3c.dom.Element;
 
 /**
@@ -177,7 +175,7 @@ public class ImageIOUtil
 }
 return true;
 }
-
+
 // sets the DPI metadata
 private static void setDPI(IIOMetadata metadata, int dpi)
 {
@@ -191,6 +189,8 @@ public class ImageIOUtil
 Element v = new IIOMetadataNode(VerticalPixelSize);
 v.setAttribute(value, Double.toString(dpi / 25.4));
 dimension.appendChild(v);
+
+root.appendChild(dimension);
 
 try
 {




svn commit: r1576202 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: encoding/Encoding.java pdfparser/BaseParser.java util/PDFStreamEngine.java util/PDFTextStripper.java util/ResourceLoader

2014-03-11 Thread tilman
Author: tilman
Date: Tue Mar 11 07:01:31 2014
New Revision: 1576202

URL: http://svn.apache.org/r1576202
Log:
PDFBOX-1946: catch SecurityException and resulting null values when run in an 
applet

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java?rev=1576202r1=1576201r2=1576202view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java 
Tue Mar 11 07:01:31 2014
@@ -70,15 +70,22 @@ public abstract class Encoding implement
 
loadGlyphProperties(org/apache/pdfbox/resources/additional_glyphlist.properties);
 
 // Load an external glyph list file that user can give as JVM property
-String location = System.getProperty(glyphlist_ext);
-if (location != null)
+try
 {
-File external = new File(location);
-if (external.exists())
+String location = System.getProperty(glyphlist_ext);
+if (location != null)
 {
-loadGlyphProperties(location);
+File external = new File(location);
+if (external.exists())
+{
+loadGlyphProperties(location);
+}
 }
 }
+catch (SecurityException e)  // can occur on Sytem.getProperty
+{
+// PDFBOX-1946 ignore and continue
+}
 
 NAME_TO_CHARACTER.put(NOTDEF, );
 NAME_TO_CHARACTER.put(fi, fi);

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1576202r1=1576201r2=1576202view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java 
Tue Mar 11 07:01:31 2014
@@ -165,8 +165,19 @@ public abstract class BaseParser
 public BaseParser(InputStream input, boolean forceParsingValue)
 throws IOException
 {
+int pushbacksize = 65536;
+try
+{
+pushbacksize = Integer.getInteger(PROP_PUSHBACK_SIZE, 65536);
+}
+catch (SecurityException e) 
+{
+// PDFBOX-1946 getInteger calls System.getProperties, 
+// which can get exception in an applet
+// ignore and use default
+}
 this.pdfSource = new PushBackInputStream(
-new BufferedInputStream(input, 16384),  Integer.getInteger( 
PROP_PUSHBACK_SIZE, 65536 ) );
+new BufferedInputStream(input, 16384), pushbacksize);
 this.forceParsing = forceParsingValue;
 }
 

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1576202r1=1576201r2=1576202view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java 
Tue Mar 11 07:01:31 2014
@@ -334,15 +334,18 @@ public class PDFStreamEngine
 glyphSpaceToTextSpaceFactor = 1f / fontMatrix.getValue(0, 0);
 }
 float spaceWidthText = 0;
-try
-{
-// to avoid crash as described in PDFBOX-614
-// lets see what the space displacement should be
-spaceWidthText = (font.getSpaceWidth() * 
glyphSpaceToTextSpaceFactor);
-}
-catch (Throwable exception)
+if (font != null) // PDFBOX-1946 font might still be null if in applet
 {
-LOG.warn(exception, exception);
+try
+{
+// to avoid crash as described in PDFBOX-614
+// lets see what the space displacement should be
+spaceWidthText = (font.getSpaceWidth() * 
glyphSpaceToTextSpaceFactor);
+}
+catch (Throwable exception)
+{
+LOG.warn(exception, exception

svn commit: r1576436 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

2014-03-11 Thread tilman
Author: tilman
Date: Tue Mar 11 17:46:33 2014
New Revision: 1576436

URL: http://svn.apache.org/r1576436
Log:
PDFBOX-1946: set default value (missed two lines in last commit)

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1576436r1=1576435r2=1576436view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java 
Tue Mar 11 17:46:33 2014
@@ -355,6 +355,8 @@ public class PDFStreamEngine
 // so lets make it a little bit smaller.
 spaceWidthText *= .80f;
 }
+else 
+spaceWidthText = 1.0f; // if could not find font, use a generic 
value
 
 float maxVerticalDisplacementText = 0;
 




svn commit: r1576439 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox: encoding/Encoding.java pdfparser/BaseParser.java util/PDFStreamEngine.java util/PDFTextStripper.java util/Resourc

2014-03-11 Thread tilman
Author: tilman
Date: Tue Mar 11 17:52:49 2014
New Revision: 1576439

URL: http://svn.apache.org/r1576439
Log:
PDFBOX-1946: catch SecurityException and resulting null values when run in an 
applet

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/ResourceLoader.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java?rev=1576439r1=1576438r2=1576439view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/encoding/Encoding.java
 Tue Mar 11 17:52:49 2014
@@ -75,15 +75,22 @@ public abstract class Encoding implement
 loadGlyphList(org/apache/pdfbox/resources/additional_glyphlist.txt);
 
 // Load an external glyph list file that user can give as JVM property
-String location = System.getProperty(glyphlist_ext);
-if(location != null)
+try
 {
-File external = new File(location);
-if(external.exists())
+String location = System.getProperty(glyphlist_ext);
+if(location != null)
 {
-loadGlyphList(location);
+File external = new File(location);
+if(external.exists())
+{
+loadGlyphList(location);
+}
 }
 }
+catch (SecurityException e)  // can occur on Sytem.getProperty
+{
+// PDFBOX-1946 ignore and continue
+}
 
 NAME_TO_CHARACTER.put( NOTDEF,  );
 NAME_TO_CHARACTER.put( fi, fi );

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1576439r1=1576438r2=1576439view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
 Tue Mar 11 17:52:49 2014
@@ -128,9 +128,22 @@ public abstract class BaseParser
 /**
  * Default value of the {@link #forceParsing} flag.
  */
-protected static final boolean FORCE_PARSING =
-Boolean.getBoolean(org.apache.pdfbox.forceParsing);
+static boolean FORCE_PARSING = true;
 
+static
+{
+// get preferences value for force parsing
+try
+{
+FORCE_PARSING = 
Boolean.getBoolean(org.apache.pdfbox.forceParsing);
+}
+catch (SecurityException e)  
+{
+// PDFBOX-1946 since Boolean.getBoolean calls System.getProperty, 
this can occur
+/* ignore and use default */
+}
+}
+
 /**
  * This is the stream that will be read from.
  */
@@ -166,8 +179,17 @@ public abstract class BaseParser
 public BaseParser(InputStream input, boolean forceParsingValue)
 throws IOException
 {
+   int pushbacksize = 65536;
+   try
+   {
+   pushbacksize = Integer.getInteger( PROP_PUSHBACK_SIZE, 
65536 );
+   }
+   catch (SecurityException e)  // getInteger calls 
System.getProperties, which can get exception
+   {
+   // ignore and use default
+   }
 this.pdfSource = new PushBackInputStream(
-new BufferedInputStream(input, 16384),  Integer.getInteger( 
PROP_PUSHBACK_SIZE, 65536 ) );
+   new BufferedInputStream(input, 16384), pushbacksize );
 this.forceParsing = forceParsingValue;
 }
 

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1576439r1=1576438r2=1576439view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
 Tue Mar 11 17:52:49 2014
@@ -348,24 +348,29 @@ public class PDFStreamEngine
 glyphSpaceToTextSpaceFactor = 1f

svn commit: r1576468 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

2014-03-11 Thread tilman
Author: tilman
Date: Tue Mar 11 18:40:00 2014
New Revision: 1576468

URL: http://svn.apache.org/r1576468
Log:
PDFBOX-1946: respect coding convention

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1576468r1=1576467r2=1576468view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java 
Tue Mar 11 18:40:00 2014
@@ -355,9 +355,10 @@ public class PDFStreamEngine
 // so lets make it a little bit smaller.
 spaceWidthText *= .80f;
 }
-else 
+else
+{
 spaceWidthText = 1.0f; // if could not find font, use a generic 
value
-
+}
 float maxVerticalDisplacementText = 0;
 
 Matrix textStateParameters = new Matrix();




svn commit: r1576467 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

2014-03-11 Thread tilman
Author: tilman
Date: Tue Mar 11 18:39:23 2014
New Revision: 1576467

URL: http://svn.apache.org/r1576467
Log:
PDFBOX-1946: respect coding convention

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java?rev=1576467r1=1576466r2=1576467view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFStreamEngine.java
 Tue Mar 11 18:39:23 2014
@@ -362,16 +362,17 @@ public class PDFStreamEngine
 }
 }
 
-if( spaceWidthText == 0 )
+if (spaceWidthText == 0)
 {
-spaceWidthText = 
(font.getAverageFontWidth()*glyphSpaceToTextSpaceFactor);
+spaceWidthText = (font.getAverageFontWidth() * 
glyphSpaceToTextSpaceFactor);
 // The average space width appears to be higher than necessary
 // so lets make it a little bit smaller.
 spaceWidthText *= .80f;
 }
-else 
-spaceWidthText=1.0f; // if could not find font, use a generic value
-
+else
+{
+spaceWidthText = 1.0f; // if could not find font, use a generic 
value
+}
 float maxVerticalDisplacementText = 0;
 
 Matrix textStateParameters = new Matrix();




svn commit: r1576531 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-03-11 Thread tilman
Author: tilman
Date: Tue Mar 11 22:30:00 2014
New Revision: 1576531

URL: http://svn.apache.org/r1576531
Log:
PDFBOX-1975: add the helper methods for the unit tests (not used yet)

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1576531r1=1576530r2=1576531view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Tue Mar 11 22:30:00 2014
@@ -1,112 +1,230 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the License); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.pdfbox.util;
-
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-
-import junit.framework.TestCase;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.rendering.ImageType;
-import org.apache.pdfbox.rendering.PDFRenderer;
-
-/**
- * Test suite for ImageIOUtil.
- */
-public class TestImageIOUtils extends TestCase
-{
-private static final Log LOG = LogFactory.getLog(TestImageIOUtils.class);
-
-/**
- * Validate page rendering for all supported image formats (JDK5).
- * @param file The file to validate
- * @param outDir Name of the output directory
- * @throws IOException when there is an exception
- */
-private void doTestFile(File file, String outDir) throws IOException
-{
-PDDocument document = null;
-String imageType = png;
-LOG.info(Preparing to convert  + file.getName());
-try
-{
-float dpi = 120;
-document = PDDocument.load(file);
-// testing PNG
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing JPG/JPEG
-imageType = jpg;
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing BMP
-imageType = bmp;
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing WBMP
-imageType = wbmp;
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing TIFF
-imageType = tif;
-writeImage(document, imageType, outDir + file.getName() + -bw-, 
ImageType.BINARY, dpi);
-writeImage(document, imageType, outDir + file.getName() + -co-, 
ImageType.RGB, dpi);
-}
-finally
-{
-if (document!= null)
-{
-document.close();
-}
-}
-}
-
-private void writeImage(PDDocument document, String imageFormat, String 
outputPrefix,
-ImageType imageType, float dpi) throws IOException
-{
-PDFRenderer renderer = new PDFRenderer(document);
-BufferedImage image = renderer.renderImageWithDPI(0, dpi, imageType);
-String fileName = outputPrefix + 1;
-LOG.info(Writing:  + fileName + . + imageFormat);
-ImageIOUtil.writeImage(image, imageFormat, fileName,  Math.round(dpi));
-}
-
-/**
- * Test to validate image rendering of file set.
- * @throws Exception when there is an exception
- */
-public void testRenderImage() throws Exception
-{
-String inDir = src/test/resources/input/ImageIOUtil;
-String outDir = target/test-output/ImageIOUtil/;
-new File(outDir).mkdir();
-
-File[] testFiles = new File(inDir).listFiles(new FilenameFilter()
-{
-public boolean accept(File dir, String name)
-{
-return (name.endsWith(.pdf) || name.endsWith(.ai));
-}
-});
-
-for (File file : testFiles)
-{
-doTestFile(file, outDir

svn commit: r1576536 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-03-11 Thread tilman
Author: tilman
Date: Tue Mar 11 22:46:38 2014
New Revision: 1576536

URL: http://svn.apache.org/r1576536
Log:
PDFBOX-1975: enable the test for PNG files

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1576536r1=1576535r2=1576536view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Tue Mar 11 22:46:38 2014
@@ -1,230 +1,231 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the License); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.pdfbox.util;
-
-import java.awt.image.BufferedImage;
-import java.io.DataInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.util.Iterator;
-import javax.imageio.ImageIO;
-import javax.imageio.ImageReader;
-import javax.imageio.metadata.IIOMetadata;
-import javax.imageio.stream.ImageInputStream;
-
-import junit.framework.TestCase;
-import static junit.framework.TestCase.assertEquals;
-import static junit.framework.TestCase.assertNotNull;
-import static junit.framework.TestCase.assertTrue;
-import static junit.framework.TestCase.fail;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.rendering.ImageType;
-import org.apache.pdfbox.rendering.PDFRenderer;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-
-/**
- * Test suite for ImageIOUtil.
- */
-public class TestImageIOUtils extends TestCase
-{
-private static final Log LOG = LogFactory.getLog(TestImageIOUtils.class);
-
-/**
- * Validate page rendering for all supported image formats (JDK5).
- * @param file The file to validate
- * @param outDir Name of the output directory
- * @throws IOException when there is an exception
- */
-private void doTestFile(File file, String outDir) throws IOException
-{
-PDDocument document = null;
-String imageType = png;
-LOG.info(Preparing to convert  + file.getName());
-try
-{
-float dpi = 120;
-document = PDDocument.load(file);
-// testing PNG
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing JPG/JPEG
-imageType = jpg;
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing BMP
-imageType = bmp;
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing WBMP
-imageType = wbmp;
-writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-// testing TIFF
-imageType = tif;
-writeImage(document, imageType, outDir + file.getName() + -bw-, 
ImageType.BINARY, dpi);
-writeImage(document, imageType, outDir + file.getName() + -co-, 
ImageType.RGB, dpi);
-}
-finally
-{
-if (document!= null)
-{
-document.close();
-}
-}
-}
-
-private void writeImage(PDDocument document, String imageFormat, String 
outputPrefix,
-ImageType imageType, float dpi) throws IOException
-{
-PDFRenderer renderer = new PDFRenderer(document);
-BufferedImage image = renderer.renderImageWithDPI(0, dpi, imageType);
-String fileName = outputPrefix + 1;
-LOG.info(Writing:  + fileName + . + imageFormat);
-ImageIOUtil.writeImage(image, imageFormat, fileName,  Math.round(dpi));
-}
-
-/**
- * Test to validate image rendering of file set.
- * @throws Exception when there is an exception

svn commit: r1576588 - /pdfbox/trunk/parent/pom.xml

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 06:09:53 2014
New Revision: 1576588

URL: http://svn.apache.org/r1576588
Log:
PDFBOX-1975: added JAI and levigo for test purposes only

Modified:
pdfbox/trunk/parent/pom.xml

Modified: pdfbox/trunk/parent/pom.xml
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/parent/pom.xml?rev=1576588r1=1576587r2=1576588view=diff
==
--- pdfbox/trunk/parent/pom.xml (original)
+++ pdfbox/trunk/parent/pom.xml Wed Mar 12 06:09:53 2014
@@ -82,8 +82,38 @@
   artifactIdicu4j/artifactId
   version52.1/version
   /dependency
+  
+  !-- For legal reasons (incompatible license), these two 
dependencies 
+   are to be used only in the tests and may not be distributed. 
+   See also LEGAL-195 --
+  dependency
+  groupIdcom.levigo.jbig2/groupId
+  artifactIdlevigo-jbig2-imageio/artifactId
+  version1.6.2/version
+  scopetest/scope
+  /dependency
+  dependency
+  groupIdjavax.media/groupId
+  artifactIdjai_imageio/artifactId
+  version1.1/version
+  scopetest/scope
+  /dependency
   /dependencies
   /dependencyManagement
+  
+  repositories
+  repository
+  idjbig2.googlecode/id
+  nameJBIG2 ImageIO-Plugin repository at googlecode.com/name
+  urlhttp://jbig2-imageio.googlecode.com/svn/maven-repository//url
+  /repository
+  repository
+  idosgeo/id
+  nameOpen Source Geospatial Foundation Repository/name
+  urlhttp://download.osgeo.org/webdav/geotools//url
+  /repository  
+  /repositories
+  
   profiles
 profile
   idpedantic/id




svn commit: r1576598 - /pdfbox/trunk/pdfbox/pom.xml

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 07:00:05 2014
New Revision: 1576598

URL: http://svn.apache.org/r1576598
Log:
PDFBOX-1975: added JAI and levigo for test purposes only

Modified:
pdfbox/trunk/pdfbox/pom.xml

Modified: pdfbox/trunk/pdfbox/pom.xml
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/pom.xml?rev=1576598r1=1576597r2=1576598view=diff
==
--- pdfbox/trunk/pdfbox/pom.xml (original)
+++ pdfbox/trunk/pdfbox/pom.xml Wed Mar 12 07:00:05 2014
@@ -71,6 +71,19 @@
   artifactIdjunit/artifactId
   scopetest/scope
 /dependency
+!-- For legal reasons (incompatible license), these two dependencies 
+ are to be used only in the tests and may not be distributed. 
+ See also LEGAL-195 --
+dependency
+  groupIdcom.levigo.jbig2/groupId
+  artifactIdlevigo-jbig2-imageio/artifactId
+  scopetest/scope
+/dependency
+dependency
+  groupIdjavax.media/groupId
+  artifactIdjai_imageio/artifactId
+  scopetest/scope
+/dependency
   /dependencies
 
   build




svn commit: r1576599 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 07:08:39 2014
New Revision: 1576599

URL: http://svn.apache.org/r1576599
Log:
PDFBOX-1975: activated unit tests for TIFF (resolution and compression)

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1576599r1=1576598r2=1576599view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Wed Mar 12 07:08:39 2014
@@ -67,22 +67,35 @@ public class TestImageIOUtils extends Te
 {
 float dpi = 120;
 document = PDDocument.load(file);
+
 // testing PNG
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
 checkResolution(outDir + file.getName() + -1. + imageType, (int) 
dpi);
+
 // testing JPG/JPEG
 imageType = jpg;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
+//TODO this one doesn't save the meta data
+
 // testing BMP
 imageType = bmp;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
+//TODO sometimes empty, sometimes correct?
+//checkResolution(outDir + file.getName() + -1. + imageType, 
(int) dpi);
+
 // testing WBMP
+//TODO this doesn't work at all, am empty image is always created
 imageType = wbmp;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
+
 // testing TIFF
 imageType = tif;
 writeImage(document, imageType, outDir + file.getName() + -bw-, 
ImageType.BINARY, dpi);
+checkResolution(outDir + file.getName() + -bw-1. + imageType, 
(int) dpi);
+checkTiffCompression(outDir + file.getName() + -bw-1. + 
imageType, CCITT T.6);
 writeImage(document, imageType, outDir + file.getName() + -co-, 
ImageType.RGB, dpi);
+checkResolution(outDir + file.getName() + -co-1. + imageType, 
(int) dpi);
+checkTiffCompression(outDir + file.getName() + -co-1. + 
imageType, LZW);
 }
 finally
 {
@@ -144,6 +157,7 @@ public class TestImageIOUtils extends Te
 private void checkResolution(String filename, int expectedResolution)
 throws IOException
 {
+assertFalse(Empty file  + filename, new File(filename).length() == 
0);
 String suffix = filename.substring(filename.lastIndexOf('.') + 1);
 if (BMP.equals(suffix.toUpperCase()))
 {
@@ -210,14 +224,14 @@ public class TestImageIOUtils extends Te
 }
 
 /**
- * Get the compression of a TIFF file
+ * checks whether the compression of a TIFF file is as expected.
  *
  * @param filename Filename
- * @return the TIFF compression
+ * @param the expected TIFF compression
  *
- * @throws IOException
+ * @throws IOException if something goes wrong
  */
-String getTiffCompression(String filename) throws IOException
+void checkTiffCompression(String filename, String expectedCompression) 
throws IOException
 {
 Iterator readers = ImageIO.getImageReadersBySuffix(tiff);
 ImageReader reader = (ImageReader) readers.next();
@@ -227,10 +241,10 @@ public class TestImageIOUtils extends Te
 Element root = (Element) 
imageMetadata.getAsTree(STANDARD_METADATA_FORMAT);
 Element comprElement = (Element) 
root.getElementsByTagName(Compression).item(0);
 Node comprTypeNode = 
comprElement.getElementsByTagName(CompressionTypeName).item(0);
-String compression = 
comprTypeNode.getAttributes().getNamedItem(value).getNodeValue();
+String actualCompression = 
comprTypeNode.getAttributes().getNamedItem(value).getNodeValue();
+assertEquals(Incorrect TIFF compression in file  + filename, 
expectedCompression, actualCompression);
 iis.close();
 reader.dispose();
-return compression;
 }
 
 }




svn commit: r1576815 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 16:53:04 2014
New Revision: 1576815

URL: http://svn.apache.org/r1576815
Log:
PDFBOX-1975: fix build problem when test directory already existed

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1576815r1=1576814r2=1576815view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Wed Mar 12 16:53:04 2014
@@ -125,11 +125,12 @@ public class TestImageIOUtils extends Te
 String inDir = src/test/resources/input/ImageIOUtil;
 String outDir = target/test-output/ImageIOUtil/;
 
-if (!new File(outDir).mkdirs())
+new File(outDir).mkdirs();
+if (!new File(outDir).exists())
 {
 throw new IOException(could not create output directory);
 }
-
+
 File[] testFiles = new File(inDir).listFiles(new FilenameFilter()
 {
 public boolean accept(File dir, String name)




svn commit: r1576821 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 17:05:28 2014
New Revision: 1576821

URL: http://svn.apache.org/r1576821
Log:
PDFBOX-1977: Check whether chunk needs adjusting before writing EOD

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java?rev=1576821r1=1576820r2=1576821view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 Wed Mar 12 17:05:28 2014
@@ -105,22 +105,8 @@ public class LZWFilter implements Filter
 result.write(newData);
 codeTable.add(newData);
 }
-if (codeTable.size() = 2047)
-{
-chunk = 12;
-}
-else if (codeTable.size() = 1023)
-{
-chunk = 11;
-}
-else if (codeTable.size() = 511)
-{
-chunk = 10;
-}
-else
-{
-chunk = 9;
-}
+
+chunk = calculateChunk(codeTable.size());
 prevCommand = nextCommand;
 }
 }
@@ -168,6 +154,7 @@ public class LZWFilter implements Filter
 if (newFoundCode == -1)
 {
 // use previous
+chunk = calculateChunk(codeTable.size() - 1);
 out.writeBits(foundCode, chunk);
 // create new table entry
 codeTable.add(inputPattern);
@@ -191,29 +178,22 @@ public class LZWFilter implements Filter
 foundCode = newFoundCode;
 }
 }
-if (codeTable.size() - 1 = 2047)
-{
-chunk = 12;
-}
-else if (codeTable.size() - 1 = 1023)
-{
-chunk = 11;
-}
-else if (codeTable.size() - 1 = 511)
-{
-chunk = 10;
-}
-else
-{
-chunk = 9;
-}
 }
 if (foundCode != -1)
 {
+chunk = calculateChunk(codeTable.size() - 1);
 out.writeBits(foundCode, chunk);
 }
+
+// PPDFBOX-1977: the decoder wouldn't know that the encoder would 
output 
+// an EOD as code, so he would have increased his own code table and 
+// possibly adjusted the chunk. Therefore, the encoder must behave as 
+// if the code table had just grown and thus it must be checked it is
+// needed to adjust the chunk, based on an increased table size 
parameter
+chunk = calculateChunk(codeTable.size());
+
 out.writeBits(EOD, chunk);
-out.writeBits(0, 7);
+out.writeBits(0, 7); // pad with 0
 out.flush(); // must do or file will be empty :-(
 codeTable.clear();
 }
@@ -275,4 +255,27 @@ public class LZWFilter implements Filter
 codeTable.add(null); // 257 CLEAR_TABLE
 }
 
+/**
+ * Calculate the appropriate chunk size
+ *
+ * @param tabSize the size of the code table
+ *
+ * @return a value between 9 and 12
+ */
+private int calculateChunk(int tabSize)
+{
+if (tabSize = 2047)
+{
+return 12;
+}
+if (tabSize = 1023)
+{
+return 11;
+}
+if (tabSize = 511)
+{
+return 10;
+}
+return 9;
+}
 }




svn commit: r1576820 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 17:05:03 2014
New Revision: 1576820

URL: http://svn.apache.org/r1576820
Log:
PDFBOX-1977: Check whether chunk needs adjusting before writing EOD

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java?rev=1576820r1=1576819r2=1576820view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java 
Wed Mar 12 17:05:03 2014
@@ -102,22 +102,8 @@ public class LZWFilter extends Filter
 decoded.write(newData);
 codeTable.add(newData);
 }
-if (codeTable.size() = 2047)
-{
-chunk = 12;
-}
-else if (codeTable.size() = 1023)
-{
-chunk = 11;
-}
-else if (codeTable.size() = 511)
-{
-chunk = 10;
-}
-else
-{
-chunk = 9;
-}
+
+chunk = calculateChunk(codeTable.size());
 prevCommand = nextCommand;
 }
 }
@@ -164,6 +150,7 @@ public class LZWFilter extends Filter
 if (newFoundCode == -1)
 {
 // use previous
+chunk = calculateChunk(codeTable.size() - 1);
 out.writeBits(foundCode, chunk);
 // create new table entry
 codeTable.add(inputPattern);
@@ -187,29 +174,22 @@ public class LZWFilter extends Filter
 foundCode = newFoundCode;
 }
 }
-if (codeTable.size() - 1 = 2047)
-{
-chunk = 12;
-}
-else if (codeTable.size() - 1 = 1023)
-{
-chunk = 11;
-}
-else if (codeTable.size() - 1 = 511)
-{
-chunk = 10;
-}
-else
-{
-chunk = 9;
-}
 }
 if (foundCode != -1)
 {
+chunk = calculateChunk(codeTable.size() - 1);
 out.writeBits(foundCode, chunk);
 }
+
+// PPDFBOX-1977: the decoder wouldn't know that the encoder would 
output 
+// an EOD as code, so he would have increased his own code table and 
+// possibly adjusted the chunk. Therefore, the encoder must behave as 
+// if the code table had just grown and thus it must be checked it is
+// needed to adjust the chunk, based on an increased table size 
parameter
+chunk = calculateChunk(codeTable.size());
+
 out.writeBits(EOD, chunk);
-out.writeBits(0, 7);
+out.writeBits(0, 7); // pad with 0
 out.flush(); // must do or file will be empty :-(
 codeTable.clear();
 }
@@ -270,4 +250,28 @@ public class LZWFilter extends Filter
 codeTable.add(null); // 256 EOD
 codeTable.add(null); // 257 CLEAR_TABLE
 }
+
+/**
+ * Calculate the appropriate chunk size
+ *
+ * @param tabSize the size of the code table
+ *
+ * @return a value between 9 and 12
+ */
+private int calculateChunk(int tabSize)
+{
+if (tabSize = 2047)
+{
+return 12;
+}
+if (tabSize = 1023)
+{
+return 11;
+}
+if (tabSize = 511)
+{
+return 10;
+}
+return 9;
+}
 }




svn commit: r1576868 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 19:36:26 2014
New Revision: 1576868

URL: http://svn.apache.org/r1576868
Log:
PDFBOX-1977: set and test resolution for JPEG images (forgot javadoc and 
cleanup)

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java?rev=1576868r1=1576867r2=1576868view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java Wed 
Mar 12 19:36:26 2014
@@ -15,7 +15,6 @@
  */
 package org.apache.pdfbox.util;
 
-import java.awt.image.BufferedImage;
 import javax.imageio.metadata.IIOInvalidTreeException;
 import javax.imageio.metadata.IIOMetadata;
 import org.w3c.dom.Element;
@@ -28,11 +27,18 @@ class JPEGUtil
 {
 static final String JPEG_NATIVE_FORMAT = javax_imageio_jpeg_image_1.0;
 
+/**
+ * Set dpi ina JPEG file
+ * 
+ * @param metadata the meta data
+ * @param dpi the dpi
+ * 
+ * @throws IIOInvalidTreeException if something goes wrong
+ */
 static void updateMetadata(IIOMetadata metadata, int dpi) throws 
IIOInvalidTreeException
 {
 // 
https://svn.apache.org/repos/asf/xmlgraphics/commons/trunk/src/java/org/apache/xmlgraphics/image/writer/imageio/ImageIOJPEGImageWriter.java
 // 
http://docs.oracle.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html
-
 Element root = (Element) metadata.getAsTree(JPEG_NATIVE_FORMAT);
 Element child = (Element) 
root.getElementsByTagName(app0JFIF).item(0);
 child.setAttribute(resUnits, 1); // inch




svn commit: r1576902 - /pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JBIG2Image.pdf

2014-03-12 Thread tilman
Author: tilman
Date: Wed Mar 12 21:06:10 2014
New Revision: 1576902

URL: http://svn.apache.org/r1576902
Log:
PDFBOX-1977: add a JBIG2 sample PDF

Added:
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JBIG2Image.pdf   
(with props)

Added: pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JBIG2Image.pdf
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JBIG2Image.pdf?rev=1576902view=auto
==
Binary file - no diff available.

Propchange: 
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JBIG2Image.pdf
--
svn:mime-type = application/pdf




svn commit: r1577249 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 17:04:52 2014
New Revision: 1577249

URL: http://svn.apache.org/r1577249
Log:
PDFBOX-1975: added a read-after-write test with compare where possible

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1577249r1=1577248r2=1577249view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Thu Mar 13 17:04:52 2014
@@ -16,6 +16,7 @@
  */
 package org.apache.pdfbox.util;
 
+import java.awt.Color;
 import java.awt.image.BufferedImage;
 import java.io.DataInputStream;
 import java.io.File;
@@ -29,12 +30,10 @@ import javax.imageio.ImageReader;
 import javax.imageio.metadata.IIOMetadata;
 import javax.imageio.stream.ImageInputStream;
 
-import junit.framework.Assert;
 import junit.framework.TestCase;
 import static junit.framework.TestCase.assertEquals;
 import static junit.framework.TestCase.assertNotNull;
 import static junit.framework.TestCase.assertTrue;
-import static junit.framework.TestCase.fail;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -85,13 +84,12 @@ public class TestImageIOUtils extends Te
 // testing GIF
 imageType = gif;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
-//TODO 
-//checkResolution(outDir + file.getName() + -1. + imageType, 
(int) dpi);
+// no META data posible for GIF, thus no test
 
 // testing WBMP
 imageType = wbmp;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.BINARY, dpi);
-//TODO check that it isn't empty, i.e. that a real image is created
+// no META data posible for WBMP, thus no test
 
 // testing TIFF
 imageType = tif;
@@ -111,6 +109,52 @@ public class TestImageIOUtils extends Te
 }
 }
 
+
+/**
+ * Checks whether file image size and content are identical
+ * @param filename the filename where we just wrote to
+ * @param image the image that is to be checked
+ * @throws IOException if something goes wrong
+ */
+private void checkImageFileSizeAndContent(String filename, BufferedImage 
image) 
+throws IOException
+{
+BufferedImage newImage = ImageIO.read(new File(filename));
+assertNotNull(File ' + filename + ' could not be read, newImage);
+checkBufferedImageSize(filename, image, newImage);
+for (int x = 0; x  image.getWidth(); ++x)
+{
+for (int y = 0; y  image.getHeight(); ++y)
+{
+if (image.getRGB(x, y) != newImage.getRGB(x, y))
+{
+assertEquals(\File ' + filename + ' has different 
pixel at ( + x + , + y + ), new Color(image.getRGB(x, y)), new 
Color(newImage.getRGB(x, y)));
+}
+}
+}
+}
+
+/**
+ * Checks whether file image size is identical
+ * @param filename the filename where we just wrote to
+ * @param image the image that is to be checked
+ * @throws IOException if something goes wrong
+ */
+private void checkImageFileSize(String filename, BufferedImage image) 
+throws IOException
+{
+BufferedImage newImage = ImageIO.read(new File(filename));
+assertNotNull(File ' + filename + ' could not be read, newImage);
+checkBufferedImageSize(filename, image, newImage);
+}
+
+private void checkBufferedImageSize(String filename, 
+BufferedImage image, BufferedImage newImage) throws IOException
+{
+assertEquals(File ' + filename + ' has different height after 
read, image.getHeight(), newImage.getHeight());
+assertEquals(File ' + filename + ' has different width after read, 
image.getWidth(), newImage.getWidth());
+}
+
 private void writeImage(PDDocument document, String imageFormat, String 
outputPrefix,
 ImageType imageType, float dpi) throws IOException
 {
@@ -118,7 +162,18 @@ public class TestImageIOUtils extends Te
 BufferedImage image = renderer.renderImageWithDPI(0, dpi, imageType);
 String fileName = outputPrefix + 1;
 LOG.info(Writing:  + fileName + . + imageFormat);
-ImageIOUtil.writeImage(image, imageFormat, fileName,  Math.round(dpi));
+ImageIOUtil.writeImage(image, imageFormat, fileName, Math.round(dpi));
+if (true) return;
+if (jpg.equals(imageFormat) || gif.equals(imageFormat

svn commit: r1577260 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 17:49:22 2014
New Revision: 1577260

URL: http://svn.apache.org/r1577260
Log:
PDFBOX-1964: support non-sequential parser

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java?rev=1577260r1=1577259r2=1577260view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java 
Thu Mar 13 17:49:22 2014
@@ -34,6 +34,7 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.cos.COSString;
+import org.apache.pdfbox.io.RandomAccess;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentInformation;
@@ -52,10 +53,11 @@ import org.apache.pdfbox.pdmodel.interac
 import org.apache.pdfbox.pdmodel.interactive.form.PDFieldFactory;
 
 /**
- * This class will take a list of pdf documents and merge them, saving the 
result in a new document.
- * 
+ * This class will take a list of pdf documents and merge them, saving the
+ * result in a new document.
+ *
  * @author a href=mailto:b...@benlitchfield.com;Ben Litchfield/a
- * 
+ *
  */
 public class PDFMergerUtility
 {
@@ -76,7 +78,7 @@ public class PDFMergerUtility
 
 /**
  * Get the name of the destination file.
- * 
+ *
  * @return Returns the destination.
  */
 public String getDestinationFileName()
@@ -86,7 +88,7 @@ public class PDFMergerUtility
 
 /**
  * Set the name of the destination file.
- * 
+ *
  * @param destination The destination to set.
  */
 public void setDestinationFileName(String destination)
@@ -96,7 +98,7 @@ public class PDFMergerUtility
 
 /**
  * Get the destination OutputStream.
- * 
+ *
  * @return Returns the destination OutputStream.
  */
 public OutputStream getDestinationStream()
@@ -106,7 +108,7 @@ public class PDFMergerUtility
 
 /**
  * Set the destination OutputStream.
- * 
+ *
  * @param destStream The destination to set.
  */
 public void setDestinationStream(OutputStream destStream)
@@ -116,7 +118,7 @@ public class PDFMergerUtility
 
 /**
  * Add a source file to the list of files to merge.
- * 
+ *
  * @param source Full path and file name of source document.
  */
 public void addSource(String source)
@@ -133,7 +135,7 @@ public class PDFMergerUtility
 
 /**
  * Add a source file to the list of files to merge.
- * 
+ *
  * @param source File representing source document
  */
 public void addSource(File source)
@@ -150,7 +152,7 @@ public class PDFMergerUtility
 
 /**
  * Add a source to the list of documents to merge.
- * 
+ *
  * @param source InputStream representing source document
  */
 public void addSource(InputStream source)
@@ -160,8 +162,9 @@ public class PDFMergerUtility
 
 /**
  * Add a list of sources to the list of documents to merge.
- * 
- * @param sourcesList List of InputStream objects representing source 
documents
+ *
+ * @param sourcesList List of InputStream objects representing source
+ * documents
  */
 public void addSources(ListInputStream sourcesList)
 {
@@ -169,12 +172,31 @@ public class PDFMergerUtility
 }
 
 /**
- * Merge the list of source documents, saving the result in the 
destination file.
- * 
+ * Merge the list of source documents, saving the result in the destination
+ * file.
+ *
  * @throws IOException If there is an error saving the document.
  */
 public void mergeDocuments() throws IOException
 {
+mergeDocuments(false, null);
+}
+
+/**
+ * Merge the list of source documents with the non sequential parser, 
saving
+ * the result in the destination file.
+ *
+ * @param scratchFile location to store temp PDFBox data for this output
+ * document
+ * @throws IOException If there is an error saving the document.
+ */
+public void mergeDocumentsNonSeq(RandomAccess scratchFile) throws 
IOException
+{
+mergeDocuments(true, scratchFile);
+}
+
+private void mergeDocuments(boolean isNonSeq, RandomAccess scratchFile) 
throws IOException
+{
 PDDocument destination = null;
 InputStream sourceFile;
 PDDocument source;
@@ -186,12 +208,27 @@ public class PDFMergerUtility
 {
 IteratorInputStream sit = sources.iterator();
 sourceFile = sit.next

svn commit: r1577261 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 17:51:32 2014
New Revision: 1577261

URL: http://svn.apache.org/r1577261
Log:
PDFBOX-1964: support non-sequential parser

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java?rev=1577261r1=1577260r2=1577261view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
 Thu Mar 13 17:51:32 2014
@@ -35,6 +35,7 @@ import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.exceptions.COSVisitorException;
+import org.apache.pdfbox.io.RandomAccess;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.PDDocumentInformation;
@@ -53,10 +54,11 @@ import org.apache.pdfbox.pdmodel.interac
 import org.apache.pdfbox.pdmodel.interactive.form.PDFieldFactory;
 
 /**
- * This class will take a list of pdf documents and merge them, saving the 
result in a new document.
- * 
+ * This class will take a list of pdf documents and merge them, saving the
+ * result in a new document.
+ *
  * @author a href=mailto:b...@benlitchfield.com;Ben Litchfield/a
- * 
+ *
  */
 public class PDFMergerUtility
 {
@@ -77,7 +79,7 @@ public class PDFMergerUtility
 
 /**
  * Get the name of the destination file.
- * 
+ *
  * @return Returns the destination.
  */
 public String getDestinationFileName()
@@ -87,7 +89,7 @@ public class PDFMergerUtility
 
 /**
  * Set the name of the destination file.
- * 
+ *
  * @param destination The destination to set.
  */
 public void setDestinationFileName(String destination)
@@ -97,7 +99,7 @@ public class PDFMergerUtility
 
 /**
  * Get the destination OutputStream.
- * 
+ *
  * @return Returns the destination OutputStream.
  */
 public OutputStream getDestinationStream()
@@ -107,7 +109,7 @@ public class PDFMergerUtility
 
 /**
  * Set the destination OutputStream.
- * 
+ *
  * @param destStream The destination to set.
  */
 public void setDestinationStream(OutputStream destStream)
@@ -117,7 +119,7 @@ public class PDFMergerUtility
 
 /**
  * Add a source file to the list of files to merge.
- * 
+ *
  * @param source Full path and file name of source document.
  */
 public void addSource(String source)
@@ -134,7 +136,7 @@ public class PDFMergerUtility
 
 /**
  * Add a source file to the list of files to merge.
- * 
+ *
  * @param source File representing source document
  */
 public void addSource(File source)
@@ -151,7 +153,7 @@ public class PDFMergerUtility
 
 /**
  * Add a source to the list of documents to merge.
- * 
+ *
  * @param source InputStream representing source document
  */
 public void addSource(InputStream source)
@@ -161,8 +163,9 @@ public class PDFMergerUtility
 
 /**
  * Add a list of sources to the list of documents to merge.
- * 
- * @param sourcesList List of InputStream objects representing source 
documents
+ *
+ * @param sourcesList List of InputStream objects representing source
+ * documents
  */
 public void addSources(ListInputStream sourcesList)
 {
@@ -170,13 +173,37 @@ public class PDFMergerUtility
 }
 
 /**
- * Merge the list of source documents, saving the result in the 
destination file.
- * 
+ * Merge the list of source documents, saving the result in the destination
+ * file.
+ *
  * @throws IOException If there is an error saving the document.
- * @throws COSVisitorException If an error occurs while saving the 
destination file.
+ * @throws COSVisitorException If an error occurs while saving the
+ * destination file.
  */
 public void mergeDocuments() throws IOException, COSVisitorException
 {
+mergeDocuments(false, null);
+}
+
+/**
+ * Merge the list of source documents with the non sequential parser, 
saving
+ * the result in the destination file.
+ *
+ * @param scratchFile location to store temp PDFBox data for this output
+ * document
+ * @throws IOException If there is an error saving the document.
+ * @throws COSVisitorException If an error occurs while saving the
+ * destination file.
+ */
+public void mergeDocumentsNonSeq(RandomAccess scratchFile) 
+throws IOException, COSVisitorException
+{
+mergeDocuments(true, scratchFile

svn commit: r1577262 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 18:03:15 2014
New Revision: 1577262

URL: http://svn.apache.org/r1577262
Log:
PDFBOX-1964: improved javadoc

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java?rev=1577262r1=1577261r2=1577262view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
 Thu Mar 13 18:03:15 2014
@@ -190,7 +190,7 @@ public class PDFMergerUtility
  * the result in the destination file.
  *
  * @param scratchFile location to store temp PDFBox data for this output
- * document
+ * document, can be null if temp data is to be stored in memory
  * @throws IOException If there is an error saving the document.
  * @throws COSVisitorException If an error occurs while saving the
  * destination file.




svn commit: r1577263 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 18:03:24 2014
New Revision: 1577263

URL: http://svn.apache.org/r1577263
Log:
PDFBOX-1964: improved javadoc

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java?rev=1577263r1=1577262r2=1577263view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFMergerUtility.java 
Thu Mar 13 18:03:24 2014
@@ -187,7 +187,7 @@ public class PDFMergerUtility
  * the result in the destination file.
  *
  * @param scratchFile location to store temp PDFBox data for this output
- * document
+ * document, can be null if temp data is to be stored in memory
  * @throws IOException If there is an error saving the document.
  */
 public void mergeDocumentsNonSeq(RandomAccess scratchFile) throws 
IOException




svn commit: r1577266 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 18:12:38 2014
New Revision: 1577266

URL: http://svn.apache.org/r1577266
Log:
PDFBOX-1984: corrected javadoc

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1577266r1=1577265r2=1577266view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java 
Thu Mar 13 18:12:38 2014
@@ -194,13 +194,13 @@ public abstract class PDFont implements 
 public abstract float getFontWidth(byte[] c, int offset, int length) 
throws IOException;
 
 /**
- * This will get the font width for a character.
+ * This will get the font height for a character.
  * 
- * @param c The character code to get the width for.
+ * @param c The character code to get the height for.
  * @param offset The offset into the array.
  * @param length The length of the data.
  * 
- * @return The width is in 1000 unit of text space, ie 333 or 777
+ * @return The height is in 1000 unit of text space, ie 333 or 777
  * 
  * @throws IOException If an error occurs while parsing.
  */




svn commit: r1577267 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 18:14:57 2014
New Revision: 1577267

URL: http://svn.apache.org/r1577267
Log:
PDFBOX-1984: corrected javadoc

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java?rev=1577267r1=1577266r2=1577267view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDFont.java
 Thu Mar 13 18:14:57 2014
@@ -265,13 +265,13 @@ public abstract class PDFont implements 
 public abstract float getFontWidth( byte[] c, int offset, int length ) 
throws IOException;
 
 /**
- * This will get the font width for a character.
+ * This will get the font height for a character.
  *
- * @param c The character code to get the width for.
+ * @param c The character code to get the height for.
  * @param offset The offset into the array.
  * @param length The length of the data.
  *
- * @return The width is in 1000 unit of text space, ie 333 or 777
+ * @return The height is in 1000 unit of text space, ie 333 or 777
  *
  * @throws IOException If an error occurs while parsing.
  */




svn commit: r1577341 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-03-13 Thread tilman
Author: tilman
Date: Thu Mar 13 22:14:45 2014
New Revision: 1577341

URL: http://svn.apache.org/r1577341
Log:
PDFBOX-1975: check color count; remove a statement that disabled code

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1577341r1=1577340r2=1577341view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Thu Mar 13 22:14:45 2014
@@ -24,7 +24,9 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FilenameFilter;
 import java.io.IOException;
+import java.util.HashSet;
 import java.util.Iterator;
+import java.util.Set;
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReader;
 import javax.imageio.metadata.IIOMetadata;
@@ -121,6 +123,7 @@ public class TestImageIOUtils extends Te
 {
 BufferedImage newImage = ImageIO.read(new File(filename));
 assertNotNull(File ' + filename + ' could not be read, newImage);
+checkNotBlank(filename, newImage);
 checkBufferedImageSize(filename, image, newImage);
 for (int x = 0; x  image.getWidth(); ++x)
 {
@@ -145,6 +148,7 @@ public class TestImageIOUtils extends Te
 {
 BufferedImage newImage = ImageIO.read(new File(filename));
 assertNotNull(File ' + filename + ' could not be read, newImage);
+checkNotBlank(filename, newImage);
 checkBufferedImageSize(filename, image, newImage);
 }
 
@@ -154,6 +158,22 @@ public class TestImageIOUtils extends Te
 assertEquals(File ' + filename + ' has different height after 
read, image.getHeight(), newImage.getHeight());
 assertEquals(File ' + filename + ' has different width after read, 
image.getWidth(), newImage.getWidth());
 }
+
+private void checkNotBlank (String filename, BufferedImage newImage)
+{
+// http://stackoverflow.com/a/5253698/535646
+SetInteger colors = new HashSetInteger();
+int w = newImage.getWidth();
+int h = newImage.getHeight();
+for (int x = 0; x  w; x++)
+{
+for (int y = 0; y  h; y++)
+{
+colors.add(newImage.getRGB(x, y));
+}
+}
+assertFalse(File ' + filename + ' has less than two colors, 
colors.size()  2);
+}
 
 private void writeImage(PDDocument document, String imageFormat, String 
outputPrefix,
 ImageType imageType, float dpi) throws IOException
@@ -163,7 +183,6 @@ public class TestImageIOUtils extends Te
 String fileName = outputPrefix + 1;
 LOG.info(Writing:  + fileName + . + imageFormat);
 ImageIOUtil.writeImage(image, imageFormat, fileName, Math.round(dpi));
-if (true) return;
 if (jpg.equals(imageFormat) || gif.equals(imageFormat))
 {
 // jpeg is lossy, gif has 256 colors, 
@@ -175,7 +194,7 @@ public class TestImageIOUtils extends Te
 checkImageFileSizeAndContent(fileName + . + imageFormat, image);
 }
 }
-
+
 /**
  * Test to validate image rendering of file set.
  * @throws Exception when there is an exception




svn commit: r1577619 - in /pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics: ./ image/ image/ccittg4.tif

2014-03-14 Thread tilman
Author: tilman
Date: Fri Mar 14 17:33:51 2014
New Revision: 1577619

URL: http://svn.apache.org/r1577619
Log:
PDFBOX-1983: added a test for CCITTFactory

Added:
pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/

pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/

pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/ccittg4.tif
   (with props)

Added: 
pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/ccittg4.tif
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/ccittg4.tif?rev=1577619view=auto
==
Binary file - no diff available.

Propchange: 
pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/ccittg4.tif
--
svn:mime-type = image/tiff




svn commit: r1577622 - in /pdfbox/trunk/pdfbox/src/test: java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java resources/org/apache/pdfbox/pdmodel/graphics/image/jpeg.jpg

2014-03-14 Thread tilman
Author: tilman
Date: Fri Mar 14 17:49:32 2014
New Revision: 1577622

URL: http://svn.apache.org/r1577622
Log:
PDFBOX-1969: added a test for JPEGFactory

Added:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
   (with props)

pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/jpeg.jpg
   (with props)

Added: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java?rev=1577622view=auto
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
 (added)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
 Fri Mar 14 17:49:32 2014
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.pdfbox.pdmodel.graphics.image;
+
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import javax.imageio.ImageIO;
+import junit.framework.TestCase;
+import static junit.framework.TestCase.assertEquals;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Tilman Hausherr
+ */
+public class JPEGFactoryTest extends TestCase
+{
+
+/** {@inheritDoc} */
+@Override
+public void setUp() throws Exception
+{
+super.setUp();
+}
+
+
+/**
+ * Test of createFromStream method, of class JPEGFactory.
+ */
+@Test
+public void testCreateFromStream() throws Exception
+{
+PDDocument document = new PDDocument();
+InputStream stream = new FileInputStream(new 
File(src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/jpeg.jpg));
+PDImageXObject ximage = JPEGFactory.createFromStream(document, stream);
+assertNotNull(ximage);
+assertNotNull(ximage.getCOSStream());
+assertTrue(ximage.getCOSStream().getFilteredLength()  0);
+assertEquals(8, ximage.getBitsPerComponent());
+assertEquals(344, ximage.getWidth());
+assertEquals(287, ximage.getHeight());
+assertEquals(jpg, ximage.getSuffix());
+
+//TODO shouldn't ximage.getImage() return a real image?
+//assertNotNull(ximage.getImage());
+//assertEquals(344, ximage.getImage().getWidth());
+//assertEquals(287, ximage.getImage().getHeight());
+
+document.close();
+}
+
+/**
+ * Test of createFromImage method, of class JPEGFactory.
+ */
+@Test
+public void testCreateFromImage() throws Exception
+{
+
+//TODO enable this test when JPEGFactory.createFromImage() works
+//PDDocument document = new PDDocument();
+//BufferedImage bim = ImageIO.read(new 
File(src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/jpeg.jpg));
+//PDImageXObject ximage = JPEGFactory.createFromImage(document, bim);
+//assertNotNull(ximage);
+//assertNotNull(ximage.getCOSStream());
+//assertTrue(ximage.getCOSStream().getFilteredLength()  0);
+//assertEquals(8, ximage.getBitsPerComponent());
+//assertEquals(344, ximage.getWidth());
+//assertEquals(287, ximage.getHeight());
+//assertEquals(jpg, ximage.getSuffix());
+
+//TODO shouldn't ximage.getImage() return a real image?
+//assertNotNull(ximage.getImage());
+//assertEquals(344, ximage.getImage().getWidth());
+//assertEquals(287, ximage.getImage().getHeight());
+
+//document.close();
+}
+
+
+}

Propchange: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java
--
svn:eol-style = native

Added: 
pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/jpeg.jpg
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/jpeg.jpg?rev=1577622view=auto
==
Binary file - no diff

svn commit: r1577653 - /pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/ccitt4-cib-test.pdf

2014-03-14 Thread tilman
Author: tilman
Date: Fri Mar 14 18:42:37 2014
New Revision: 1577653

URL: http://svn.apache.org/r1577653
Log:
PDFBOX-1975: added a CCITT G4 compressed file as test

Added:

pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/ccitt4-cib-test.pdf   
(with props)

Added: 
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/ccitt4-cib-test.pdf
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/ccitt4-cib-test.pdf?rev=1577653view=auto
==
Binary file - no diff available.

Propchange: 
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/ccitt4-cib-test.pdf
--
svn:mime-type = application/pdf




svn commit: r1577661 - in /pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil: JPXTestCMYK.pdf JPXTestGrey.pdf JPXTestRGB.pdf

2014-03-14 Thread tilman
Author: tilman
Date: Fri Mar 14 18:58:05 2014
New Revision: 1577661

URL: http://svn.apache.org/r1577661
Log:
PDFBOX-1975: add three JPX test files

Added:
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestCMYK.pdf   
(with props)
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestGrey.pdf   
(with props)
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestRGB.pdf   
(with props)

Added: pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestCMYK.pdf
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestCMYK.pdf?rev=1577661view=auto
==
Binary file - no diff available.

Propchange: 
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestCMYK.pdf
--
svn:mime-type = application/pdf

Added: pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestGrey.pdf
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestGrey.pdf?rev=1577661view=auto
==
Binary file - no diff available.

Propchange: 
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestGrey.pdf
--
svn:mime-type = application/pdf

Added: pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestRGB.pdf
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestRGB.pdf?rev=1577661view=auto
==
Binary file - no diff available.

Propchange: 
pdfbox/trunk/pdfbox/src/test/resources/input/ImageIOUtil/JPXTestRGB.pdf
--
svn:mime-type = application/pdf




svn commit: r1577734 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java

2014-03-14 Thread tilman
Author: tilman
Date: Fri Mar 14 21:38:35 2014
New Revision: 1577734

URL: http://svn.apache.org/r1577734
Log:
PDFBOX-1969: fix JPEGFactory bug

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java?rev=1577734r1=1577733r2=1577734view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
 Fri Mar 14 21:38:35 2014
@@ -18,12 +18,12 @@ package org.apache.pdfbox.pdmodel.graphi
 
 import java.awt.image.BufferedImage;
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Iterator;
 
-import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.filter.MissingImageReaderException;
 import org.apache.pdfbox.io.IOUtils;
@@ -40,6 +40,7 @@ import javax.imageio.metadata.IIOMetadat
 import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
 import javax.imageio.stream.ImageInputStream;
 import javax.imageio.stream.ImageOutputStream;
+import org.apache.pdfbox.cos.COSStream;
 
 /**
  * Factory for creating a PDImageXObject containing a JPEG compressed image.
@@ -170,40 +171,15 @@ public final class JPEGFactory extends I
 {
 return createJPEG(document, image, quality, dpi);
 }
-
-// Creates an Image XObject from a Buffered Image using JAI Image I/O
-private static PDImageXObject createJPEG(PDDocument document, 
BufferedImage image,
- float quality, int dpi) throws 
IOException
+
+private static void encodeImageToJPEGStream(BufferedImage image, float 
quality, int dpi, OutputStream out) 
+throws IOException
 {
-// extract alpha channel (if any)
-BufferedImage awtColor = getColorImage(image);
-BufferedImage awtAlpha = getAlphaImage(image);
-
-// create XObject
-PDImageXObject pdImage = new PDImageXObject(new PDStream(document), 
null);
-
-// add DCT filter
-COSDictionary dict = pdImage.getCOSStream();
-pdImage.getCOSStream().setItem(COSName.FILTER, COSName.DCT_DECODE);
-
-// alpha - soft mask
-if (awtAlpha != null)
-{
-PDImage xAlpha = JPEGFactory.createFromImage(document, awtAlpha, 
quality);
-dict.setItem(COSName.SMASK, xAlpha);
-}
-
-// set properties (width, height, depth, color space, etc.)
-setPropertiesFromAWT(awtColor, pdImage);
-
 // encode to JPEG
-OutputStream out = null;
 ImageOutputStream ios = null;
 ImageWriter imageWriter = null;
 try
 {
-out = pdImage.getCOSStream().createFilteredStream();
-
 // find JAI writer
 imageWriter = ImageIO.getImageWritersBySuffix(jpeg).next();
 ios = ImageIO.createImageOutputStream(out);
@@ -239,6 +215,36 @@ public final class JPEGFactory extends I
 imageWriter.dispose();
 }
 }
+}
+
+// Creates an Image XObject from a Buffered Image using JAI Image I/O
+private static PDImageXObject createJPEG(PDDocument document, 
BufferedImage image,
+ float quality, int dpi) throws 
IOException
+{
+// extract alpha channel (if any)
+BufferedImage awtColorImage = getColorImage(image);
+BufferedImage awtAlphaImage = getAlphaImage(image);
+
+// create XObject
+ByteArrayOutputStream bos = new ByteArrayOutputStream();
+encodeImageToJPEGStream(image, quality, dpi, bos);
+ByteArrayInputStream byteStream = new 
ByteArrayInputStream(bos.toByteArray());
+PDImageXObject pdImage = new PDImageXObject(new PDStream(document, 
byteStream, true), null);
+
+// add DCT filter
+COSStream dict = pdImage.getCOSStream();
+dict.setItem(COSName.FILTER, COSName.DCT_DECODE);
+
+// alpha - soft mask
+if (awtAlphaImage != null)
+{
+encodeImageToJPEGStream(awtAlphaImage, quality, dpi, 
dict.createFilteredStream());
+PDImage xAlpha = JPEGFactory.createFromImage(document, 
awtAlphaImage, quality);
+dict.setItem(COSName.SMASK, xAlpha);
+}
+
+// set properties (width, height, depth, color space, etc.)
+setPropertiesFromAWT(awtColorImage, pdImage);
 
 return pdImage;
 }




svn commit: r1577878 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/graphics/image/ test/java/org/apache/pdfbox/pdmodel/graphics/image/

2014-03-15 Thread tilman
Author: tilman
Date: Sat Mar 15 15:21:50 2014
New Revision: 1577878

URL: http://svn.apache.org/r1577878
Log:
PDFBOX-1969: more refactoring; removed useless line; added graphics.dispose() 
call; prepare test for ARGB image

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java?rev=1577878r1=1577877r2=1577878view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/ImageFactory.java
 Sat Mar 15 15:21:50 2014
@@ -108,6 +108,7 @@ class ImageFactory
 Graphics2D g = rgbImage.createGraphics();
 g.setComposite(AlphaComposite.Src);
 g.drawImage(image, 0, 0, null);
+g.dispose();
 
 return rgbImage;
 }

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java?rev=1577878r1=1577877r2=1577878view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactory.java
 Sat Mar 15 15:21:50 2014
@@ -21,7 +21,6 @@ import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.io.IOException;
-import java.io.OutputStream;
 import java.util.Iterator;
 
 import org.apache.pdfbox.cos.COSName;
@@ -29,18 +28,11 @@ import org.apache.pdfbox.filter.MissingI
 import org.apache.pdfbox.io.IOUtils;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.common.PDStream;
-import org.w3c.dom.Element;
-
-import javax.imageio.IIOImage;
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReader;
-import javax.imageio.ImageTypeSpecifier;
-import javax.imageio.ImageWriter;
-import javax.imageio.metadata.IIOMetadata;
-import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
 import javax.imageio.stream.ImageInputStream;
-import javax.imageio.stream.ImageOutputStream;
 import org.apache.pdfbox.cos.COSStream;
+import org.apache.pdfbox.util.ImageIOUtil;
 
 /**
  * Factory for creating a PDImageXObject containing a JPEG compressed image.
@@ -172,51 +164,6 @@ public final class JPEGFactory extends I
 return createJPEG(document, image, quality, dpi);
 }
 
-private static void encodeImageToJPEGStream(BufferedImage image, float 
quality, int dpi, OutputStream out) 
-throws IOException
-{
-// encode to JPEG
-ImageOutputStream ios = null;
-ImageWriter imageWriter = null;
-try
-{
-// find JAI writer
-imageWriter = ImageIO.getImageWritersBySuffix(jpeg).next();
-ios = ImageIO.createImageOutputStream(out);
-imageWriter.setOutput(ios);
-
-// add compression
-JPEGImageWriteParam jpegParam = 
(JPEGImageWriteParam)imageWriter.getDefaultWriteParam();
-jpegParam.setCompressionMode(JPEGImageWriteParam.MODE_EXPLICIT);
-jpegParam.setCompressionQuality(quality);
-
-// add metadata
-ImageTypeSpecifier imageTypeSpecifier = new 
ImageTypeSpecifier(image);
-IIOMetadata data = 
imageWriter.getDefaultImageMetadata(imageTypeSpecifier, jpegParam);
-Element tree = 
(Element)data.getAsTree(javax_imageio_jpeg_image_1.0);
-Element jfif = 
(Element)tree.getElementsByTagName(app0JFIF).item(0);
-jfif.setAttribute(Xdensity, Integer.toString(dpi));
-jfif.setAttribute(Ydensity, Integer.toString(dpi));
-jfif.setAttribute(resUnits, 1); // 1 = dots/inch
-
-// write
-imageWriter.write(data, new IIOImage(image, null, null), 
jpegParam);
-}
-finally
-{
-// clean up
-IOUtils.closeQuietly(out);
-if (ios != null)
-{
-ios.close();
-}
-if (imageWriter != null)
-{
-imageWriter.dispose();
-}
-}
-}
-
 // Creates an Image XObject from a Buffered Image using JAI Image I/O
 private static PDImageXObject createJPEG(PDDocument document

svn commit: r1577931 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util: ImageIOUtil.java JPEGUtil.java MetaUtil.java TIFFUtil.java

2014-03-15 Thread tilman
Author: tilman
Date: Sat Mar 15 20:07:44 2014
New Revision: 1577931

URL: http://svn.apache.org/r1577931
Log:
PDFBOX-1975: expand JPEGUtil for missing nodes in metadata; some refactoring

Added:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/MetaUtil.java   
(with props)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/TIFFUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1577931r1=1577930r2=1577931view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
Sat Mar 15 20:07:44 2014
@@ -32,6 +32,7 @@ import javax.imageio.metadata.IIOInvalid
 import javax.imageio.metadata.IIOMetadata;
 import javax.imageio.metadata.IIOMetadataNode;
 import javax.imageio.stream.ImageOutputStream;
+import static org.apache.pdfbox.util.MetaUtil.STANDARD_METADATA_FORMAT;
 import org.w3c.dom.NodeList;
 
 /**
@@ -39,8 +40,6 @@ import org.w3c.dom.NodeList;
  */
 public class ImageIOUtil
 {
-private static final String STANDARD_METADATA_FORMAT = javax_imageio_1.0;
-
 private ImageIOUtil()
 {
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java?rev=1577931r1=1577930r2=1577931view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java Sat 
Mar 15 20:07:44 2014
@@ -17,7 +17,11 @@ package org.apache.pdfbox.util;
 
 import javax.imageio.metadata.IIOInvalidTreeException;
 import javax.imageio.metadata.IIOMetadata;
+import javax.imageio.metadata.IIOMetadataNode;
+import static org.apache.pdfbox.util.MetaUtil.JPEG_NATIVE_FORMAT;
+import static org.apache.pdfbox.util.MetaUtil.debugLogMetadata;
 import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
 
 /**
  *
@@ -25,25 +29,63 @@ import org.w3c.dom.Element;
  */
 class JPEGUtil
 {
-static final String JPEG_NATIVE_FORMAT = javax_imageio_jpeg_image_1.0;
-
 /**
- * Set dpi ina JPEG file
- * 
+ * Set dpi in a JPEG file
+ *
  * @param metadata the meta data
  * @param dpi the dpi
- * 
+ *
  * @throws IIOInvalidTreeException if something goes wrong
  */
 static void updateMetadata(IIOMetadata metadata, int dpi) throws 
IIOInvalidTreeException
 {
-// 
https://svn.apache.org/repos/asf/xmlgraphics/commons/trunk/src/java/org/apache/xmlgraphics/image/writer/imageio/ImageIOJPEGImageWriter.java
+debugLogMetadata(metadata, JPEG_NATIVE_FORMAT);
+
+// 
https://svn.apache.org/viewvc/xmlgraphics/commons/trunk/src/java/org/apache/xmlgraphics/image/writer/imageio/ImageIOJPEGImageWriter.java
 // 
http://docs.oracle.com/javase/6/docs/api/javax/imageio/metadata/doc-files/jpeg_metadata.html
 Element root = (Element) metadata.getAsTree(JPEG_NATIVE_FORMAT);
-Element child = (Element) 
root.getElementsByTagName(app0JFIF).item(0);
-child.setAttribute(resUnits, 1); // inch
-child.setAttribute(Xdensity, Integer.toString(dpi));
-child.setAttribute(Ydensity, Integer.toString(dpi));
-metadata.mergeTree(JPEG_NATIVE_FORMAT, root);
+NodeList jvarNodeList = root.getElementsByTagName(JPEGvariety);
+Element jvarChild;
+if (jvarNodeList.getLength() == 0)
+{
+jvarChild = new IIOMetadataNode(JPEGvariety);
+root.appendChild(jvarChild);
+}
+else
+{
+jvarChild = (Element) jvarNodeList.item(0);
+}
+
+NodeList jfifNodeList = jvarChild.getElementsByTagName(app0JFIF);
+Element jfifChild;
+if (jfifNodeList.getLength() == 0)
+{
+jfifChild = new IIOMetadataNode(app0JFIF);
+jvarChild.appendChild(jfifChild);
+}
+else
+{
+jfifChild = (Element) jfifNodeList.item(0);
+}
+if (jfifChild.getAttribute(majorVersion).isEmpty())
+{
+jfifChild.setAttribute(majorVersion, 1);
+}
+if (jfifChild.getAttribute(minorVersion).isEmpty())
+{
+jfifChild.setAttribute(minorVersion, 2);
+}
+jfifChild.setAttribute(resUnits, 1); // inch
+jfifChild.setAttribute(Xdensity, Integer.toString(dpi));
+jfifChild.setAttribute(Ydensity, Integer.toString(dpi

svn commit: r1578259 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-03-17 Thread tilman
Author: tilman
Date: Mon Mar 17 07:37:53 2014
New Revision: 1578259

URL: http://svn.apache.org/r1578259
Log:
PDFBOX-1975: added error log output if writeImage() returns false

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1578259r1=1578258r2=1578259view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
Mon Mar 17 07:37:53 2014
@@ -32,6 +32,8 @@ import javax.imageio.metadata.IIOInvalid
 import javax.imageio.metadata.IIOMetadata;
 import javax.imageio.metadata.IIOMetadataNode;
 import javax.imageio.stream.ImageOutputStream;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import static org.apache.pdfbox.util.MetaUtil.STANDARD_METADATA_FORMAT;
 import org.w3c.dom.NodeList;
 
@@ -40,6 +42,11 @@ import org.w3c.dom.NodeList;
  */
 public class ImageIOUtil
 {
+/**
+ * Log instance
+ */
+private static final Log LOG = LogFactory.getLog(ImageIOUtil.class);
+
 private ImageIOUtil()
 {
 }
@@ -120,7 +127,7 @@ public class ImageIOUtil
 IIOMetadata metadata = null;
 // Loop until we get the best driver, i.e. one that supports
 // setting dpi in the standard metadata format; however we'd also 
-// accept a driver that can't if a better one can't be found
+// accept a driver that can't, if a better one can't be found
 while (writers.hasNext())
 {
 if (writer != null)
@@ -139,6 +146,15 @@ public class ImageIOUtil
 }
 if (writer == null)
 {
+LOG.error(No ImageWriter found for ' + formatName + ' 
format);
+StringBuilder sb = new StringBuilder();
+String[] writerFormatNames = ImageIO.getWriterFormatNames();
+for (String fmt : writerFormatNames)
+{
+sb.append(fmt);
+sb.append(' ');
+}
+LOG.error(Supported formats:  + sb);
 return false;
 }
 




svn commit: r1578489 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/graphics/image/ test/java/org/apache/pdfbox/pdmodel/graphics/image/ test/resources/org/apache/pdfbox/pdmodel/gra

2014-03-17 Thread tilman
Author: tilman
Date: Mon Mar 17 18:09:50 2014
New Revision: 1578489

URL: http://svn.apache.org/r1578489
Log:
PDFBOX-1990: Support creating PDF from lossless encoded images; improved the 
other tests in that package; added test image

Added:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
   (with props)

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java
  - copied, changed from r1578235, 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/NullOutputStream.java
   (with props)

pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/png.png
   (with props)
Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/CCITTFactoryTest.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/JPEGFactoryTest.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/PDInlineImageTest.java

Added: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java?rev=1578489view=auto
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 (added)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 Mon Mar 17 18:09:50 2014
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2014 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an AS IS BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.pdmodel.graphics.image;
+
+import java.awt.Color;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
+import org.apache.pdfbox.filter.Filter;
+import org.apache.pdfbox.filter.FilterFactory;
+import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
+
+/**
+ * Factory for creating a PDImageXObject containing a lossless compressed 
image.
+ * 
+ * @author Tilman Hausherr
+ */
+class LosslessFactory
+{
+/**
+ * Creates a new lossless encoded Image XObject from a Buffered Image.
+ *
+ * @param document the document where the image will be created
+ * @param image the buffered image to embed
+ * @return a new Image XObject
+ * @throws IOException if something goes wrong
+ */
+static PDImageXObject createLosslessFromImage(PDDocument document, 
BufferedImage bim)
+throws IOException
+{
+ByteArrayOutputStream bos = new ByteArrayOutputStream();
+
+//TODO use bit writing, indexed, etc
+int h = bim.getHeight();
+int w = bim.getWidth();
+for (int y = 0; y  h; ++y)
+{
+for (int x = 0; x  w; ++x)
+{
+Color co = new Color(bim.getRGB(x, y));
+bos.write(co.getRed());
+bos.write(co.getGreen());
+bos.write(co.getBlue());
+}
+}
+
+ByteArrayInputStream bais = new 
ByteArrayInputStream(bos.toByteArray());
+
+Filter filter = FilterFactory.INSTANCE.getFilter(COSName.FLATE_DECODE);
+ByteArrayOutputStream bos2 = new ByteArrayOutputStream();
+filter.encode(bais, bos2, new COSDictionary(), 0);
+
+ByteArrayInputStream filteredByteStream = new 
ByteArrayInputStream(bos2.toByteArray());
+PDImageXObject pdImage = new PDImageXObject(document, 
filteredByteStream);
+
+COSDictionary dict = pdImage.getCOSStream();
+dict.setItem(COSName.FILTER, COSName.FLATE_DECODE);
+pdImage.setColorSpace(PDDeviceRGB.INSTANCE);  //TODO from image
+pdImage.setBitsPerComponent(8); //TODO other sizes
+pdImage.setHeight(bim.getHeight());
+pdImage.setWidth(bim.getWidth());
+return pdImage;
+}
+
+}

Propchange: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

svn commit: r1578503 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

2014-03-17 Thread tilman
Author: tilman
Date: Mon Mar 17 18:41:31 2014
New Revision: 1578503

URL: http://svn.apache.org/r1578503
Log:
PDFBOX-1990: forgot to set the class public

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java?rev=1578503r1=1578502r2=1578503view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 Mon Mar 17 18:41:31 2014
@@ -32,7 +32,7 @@ import org.apache.pdfbox.pdmodel.graphic
  * 
  * @author Tilman Hausherr
  */
-class LosslessFactory
+public class LosslessFactory
 {
 /**
  * Creates a new lossless encoded Image XObject from a Buffered Image.




svn commit: r1578505 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

2014-03-17 Thread tilman
Author: tilman
Date: Mon Mar 17 18:42:52 2014
New Revision: 1578505

URL: http://svn.apache.org/r1578505
Log:
PDFBOX-1990: forgot to set the method public

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java?rev=1578505r1=1578504r2=1578505view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 Mon Mar 17 18:42:52 2014
@@ -42,7 +42,7 @@ public class LosslessFactory
  * @return a new Image XObject
  * @throws IOException if something goes wrong
  */
-static PDImageXObject createLosslessFromImage(PDDocument document, 
BufferedImage bim)
+public static PDImageXObject createLosslessFromImage(PDDocument document, 
BufferedImage bim)
 throws IOException
 {
 ByteArrayOutputStream bos = new ByteArrayOutputStream();




svn commit: r1578507 - /pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java

2014-03-17 Thread tilman
Author: tilman
Date: Mon Mar 17 18:46:20 2014
New Revision: 1578507

URL: http://svn.apache.org/r1578507
Log:
PDFBOX-1990: added gif, bmp and png to ImageToPdf example

Modified:

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java

Modified: 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java?rev=1578507r1=1578506r2=1578507view=diff
==
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java
 (original)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java
 Mon Mar 17 18:46:20 2014
@@ -16,9 +16,11 @@
  */
 package org.apache.pdfbox.examples.pdmodel;
 
+import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
+import javax.imageio.ImageIO;
 
 import org.apache.pdfbox.io.RandomAccessFile;
 
@@ -30,6 +32,7 @@ import org.apache.pdfbox.pdmodel.edit.PD
 import org.apache.pdfbox.pdmodel.graphics.image.CCITTFactory;
 import org.apache.pdfbox.pdmodel.graphics.image.JPEGFactory;
 import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
+import org.apache.pdfbox.pdmodel.graphics.image.LosslessFactory;
 
 /**
  * This is an example that creates a simple document.
@@ -65,10 +68,18 @@ public class ImageToPDF
 {
 pdImage = JPEGFactory.createFromStream(doc, new 
FileInputStream(image));
 }
-else if (image.toLowerCase().endsWith(.tif) || 
image.toLowerCase().endsWith(.tiff))
+else if (image.toLowerCase().endsWith(.tif) || 
+image.toLowerCase().endsWith(.tiff))
 {
 pdImage = CCITTFactory.createFromRandomAccess(doc, new 
RandomAccessFile(new File(image),r));
 }
+else if (image.toLowerCase().endsWith(.gif) || 
+image.toLowerCase().endsWith(.bmp) || 
+image.toLowerCase().endsWith(.png))
+{
+BufferedImage bim = ImageIO.read(new File(image));
+pdImage = LosslessFactory.createLosslessFromImage(doc, bim);
+}
 else
 {
 //BufferedImage awtImage = ImageIO.read( new File( image ) );




svn commit: r1578544 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-03-17 Thread tilman
Author: tilman
Date: Mon Mar 17 20:20:01 2014
New Revision: 1578544

URL: http://svn.apache.org/r1578544
Log:
PDFBOX-1975, PDFBOX-1989: added a test to save PDImageXObject objects from PDF 
within TestImageIOUtils

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1578544r1=1578543r2=1578544view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Mon Mar 17 20:20:01 2014
@@ -26,6 +26,8 @@ import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import javax.imageio.ImageIO;
 import javax.imageio.ImageReader;
@@ -40,6 +42,12 @@ import static junit.framework.TestCase.a
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.PDPage;
+import org.apache.pdfbox.pdmodel.PDResources;
+import org.apache.pdfbox.pdmodel.graphics.PDXObject;
+import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
+import org.apache.pdfbox.pdmodel.graphics.image.NullOutputStream;
+import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.apache.pdfbox.rendering.ImageType;
 import org.apache.pdfbox.rendering.PDFRenderer;
 import org.w3c.dom.Element;
@@ -53,8 +61,50 @@ public class TestImageIOUtils extends Te
 {
 private static final Log LOG = LogFactory.getLog(TestImageIOUtils.class);
 
+
+/**
+ * Check whether the resource images can be saved.
+ * 
+ * @param resources
+ * @throws IOException 
+ */
+void checkSaveResources(PDResources resources) throws IOException
+{
+if (resources == null)
+{
+return;
+}
+MapString, PDXObject xobjects = resources.getXObjects();
+if (xobjects != null)
+{
+for (String key : xobjects.keySet())
+{
+PDXObject xobject = xobjects.get(key);
+if (xobject instanceof PDImageXObject)
+{
+PDImageXObject imageObject = (PDImageXObject) xobject;
+String suffix = imageObject.getSuffix();
+if (suffix != null)
+{
+if (jpx.equals(suffix))
+{
+suffix = JPEG2000;
+}
+boolean writeOK = 
ImageIOUtil.writeImage(imageObject.getImage(), suffix, new NullOutputStream());
+assertTrue(writeOK);
+}
+}
+else if (xobject instanceof PDFormXObject)
+{
+checkSaveResources(((PDFormXObject) 
xobject).getResources());
+}
+}
+}
+}
+
 /**
  * Validate page rendering for all supported image formats (JDK5).
+ *
  * @param file The file to validate
  * @param outDir Name of the output directory
  * @throws IOException when there is an exception
@@ -69,10 +119,14 @@ public class TestImageIOUtils extends Te
 float dpi = 120;
 document = PDDocument.load(file);
 
+// Save image resources of first page
+ListPDPage pdPages = document.getDocumentCatalog().getAllPages();
+checkSaveResources(pdPages.get(0).getResources());
+
 // testing PNG
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
 checkResolution(outDir + file.getName() + -1. + imageType, (int) 
dpi);
-
+
 // testing JPG/JPEG
 imageType = jpg;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
@@ -87,7 +141,7 @@ public class TestImageIOUtils extends Te
 imageType = gif;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.RGB, dpi);
 // no META data posible for GIF, thus no test
-
+
 // testing WBMP
 imageType = wbmp;
 writeImage(document, imageType, outDir + file.getName() + -, 
ImageType.BINARY, dpi);
@@ -104,21 +158,21 @@ public class TestImageIOUtils extends Te
 }
 finally
 {
-if (document!= null)
+if (document != null)
 {
 document.close();
 }
 }
 }
 
-
 /**
  * Checks whether file image size and content

svn commit: r1578940 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/NullOutputStream.java

2014-03-18 Thread tilman
Author: tilman
Date: Tue Mar 18 14:57:37 2014
New Revision: 1578940

URL: http://svn.apache.org/r1578940
Log:
PDFBOX-1990: optimize NullOutputStream for speed

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/NullOutputStream.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/NullOutputStream.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/NullOutputStream.java?rev=1578940r1=1578939r2=1578940view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/NullOutputStream.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/NullOutputStream.java
 Tue Mar 18 14:57:37 2014
@@ -29,4 +29,14 @@ public class NullOutputStream extends Ou
 public void write(int b) throws IOException
 {
 }
+
+@Override
+public void write(byte[] b, int off, int len) throws IOException
+{
+}
+
+@Override
+public void write(byte[] b) throws IOException
+{
+}
 }




svn commit: r1579073 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java

2014-03-18 Thread tilman
Author: tilman
Date: Tue Mar 18 22:15:27 2014
New Revision: 1579073

URL: http://svn.apache.org/r1579073
Log:
PDFBOX-1990: improve names as suggested by John Hewson

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java?rev=1579073r1=1579072r2=1579073view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 Tue Mar 18 22:15:27 2014
@@ -29,7 +29,7 @@ import org.apache.pdfbox.pdmodel.graphic
 
 /**
  * Factory for creating a PDImageXObject containing a lossless compressed 
image.
- * 
+ *
  * @author Tilman Hausherr
  */
 public class LosslessFactory
@@ -42,22 +42,22 @@ public class LosslessFactory
  * @return a new Image XObject
  * @throws IOException if something goes wrong
  */
-public static PDImageXObject createLosslessFromImage(PDDocument document, 
BufferedImage bim)
+public static PDImageXObject createFromImage(PDDocument document, 
BufferedImage image)
 throws IOException
 {
 ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
 //TODO use bit writing, indexed, etc
-int h = bim.getHeight();
-int w = bim.getWidth();
+int h = image.getHeight();
+int w = image.getWidth();
 for (int y = 0; y  h; ++y)
 {
 for (int x = 0; x  w; ++x)
 {
-Color co = new Color(bim.getRGB(x, y));
-bos.write(co.getRed());
-bos.write(co.getGreen());
-bos.write(co.getBlue());
+Color color = new Color(image.getRGB(x, y));
+bos.write(color.getRed());
+bos.write(color.getGreen());
+bos.write(color.getBlue());
 }
 }
 
@@ -74,8 +74,8 @@ public class LosslessFactory
 dict.setItem(COSName.FILTER, COSName.FLATE_DECODE);
 pdImage.setColorSpace(PDDeviceRGB.INSTANCE);  //TODO from image
 pdImage.setBitsPerComponent(8); //TODO other sizes
-pdImage.setHeight(bim.getHeight());
-pdImage.setWidth(bim.getWidth());
+pdImage.setHeight(image.getHeight());
+pdImage.setWidth(image.getWidth());
 return pdImage;
 }
 

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java?rev=1579073r1=1579072r2=1579073view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java
 Tue Mar 18 22:15:27 2014
@@ -30,14 +30,14 @@ import org.apache.pdfbox.util.ImageIOUti
 public class LosslessFactoryTest extends TestCase
 {
 /**
- * Tests LosslessFactoryTest#createLosslessFromImage(PDDocument document,
+ * Tests LosslessFactoryTest#createFromImage(PDDocument document,
  * BufferedImage image)
  */
 public void testCreateLosslessFromImage() throws IOException
 {
 PDDocument document = new PDDocument();
 BufferedImage image = 
ImageIO.read(JPEGFactoryTest.class.getResourceAsStream(png.png));
-PDImageXObject ximage = 
LosslessFactory.createLosslessFromImage(document, image);
+PDImageXObject ximage = LosslessFactory.createFromImage(document, 
image);
 assertNotNull(ximage);
 assertNotNull(ximage.getCOSStream());
 assertTrue(ximage.getCOSStream().getFilteredLength()  0);




svn commit: r1579074 - /pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java

2014-03-18 Thread tilman
Author: tilman
Date: Tue Mar 18 22:17:22 2014
New Revision: 1579074

URL: http://svn.apache.org/r1579074
Log:
PDFBOX-1990: improve names as suggested by John Hewson

Modified:

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java

Modified: 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java?rev=1579074r1=1579073r2=1579074view=diff
==
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java
 (original)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ImageToPDF.java
 Tue Mar 18 22:17:22 2014
@@ -78,7 +78,7 @@ public class ImageToPDF
 image.toLowerCase().endsWith(.png))
 {
 BufferedImage bim = ImageIO.read(new File(image));
-pdImage = LosslessFactory.createLosslessFromImage(doc, bim);
+pdImage = LosslessFactory.createFromImage(doc, bim);
 }
 else
 {




svn commit: r1579369 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-03-19 Thread tilman
Author: tilman
Date: Wed Mar 19 19:55:33 2014
New Revision: 1579369

URL: http://svn.apache.org/r1579369
Log:
PDFBOX-1975: deprecated one call, more javadoc

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1579369r1=1579368r2=1579369view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
Wed Mar 19 19:55:33 2014
@@ -46,22 +46,59 @@ public class ImageIOUtil
  * Log instance
  */
 private static final Log LOG = LogFactory.getLog(ImageIOUtil.class);
-
+
 private ImageIOUtil()
 {
 }
 
 /**
- * Writes a buffered image to a file using the given image format.
+ * Writes a buffered image to a file using the given image format. See 
+ * {@link #writeImage(BufferedImage image, String formatName, 
+ * OutputStream output, int dpi, float quality)} for more details.
+ *
+ * @param image the image to be written
+ * @param formatName the target format (ex. png) which is also the suffix
+ * @param filename used to construct the filename for the individual image.
+ * Its suffix will be used as the image format.
+ * @param dpi the resolution in dpi (dots per inch)
+ * @return true if the image file was produced, false if there was an 
error.
+ * @throws IOException if an I/O error occurs
+ */
+public static boolean writeImage(BufferedImage image, String filename,
+int dpi) throws IOException
+{
+File file = new File(filename);
+FileOutputStream output = new FileOutputStream(file);
+try
+{
+String formatName = filename.substring(filename.lastIndexOf('.') + 
1);
+return writeImage(image, formatName, output, dpi);
+}
+finally
+{
+output.close();
+}
+}
+
+/**
+ * Writes a buffered image to a file using the given image format. See 
 
+ * {@link #writeImage(BufferedImage image, String formatName, 
+ * OutputStream output, int dpi, float quality)} for more details.
+ *
  * @param image the image to be written
  * @param formatName the target format (ex. png) which is also the suffix
- * @param filename used to construct the filename for the individual 
images, without the suffix
+ * for the filename
+ * @param filename used to construct the filename for the individual image.
+ * The formatName parameter will be used as the suffix.
  * @param dpi the resolution in dpi (dots per inch)
- * @return true if the image file was produced, false if there was an error
+ * @return true if the image file was produced, false if there was an 
error.
  * @throws IOException if an I/O error occurs
+ * @deprecated use
+ * {@link #writeImage(BufferedImage image, String filename, int dpi)}, 
which
+ * uses the full filename instead of just the prefix.
  */
 public static boolean writeImage(BufferedImage image, String formatName, 
String filename,
- int dpi) throws IOException
+int dpi) throws IOException
 {
 File file = new File(filename + . + formatName);
 FileOutputStream output = new FileOutputStream(file);
@@ -76,11 +113,14 @@ public class ImageIOUtil
 }
 
 /**
- * Writes a buffered image to a file using the given image format.
+ * Writes a buffered image to a file using the given image format. See 
 
+ * {@link #writeImage(BufferedImage image, String formatName, 
+ * OutputStream output, int dpi, float quality)} for more details.
+ *
  * @param image the image to be written
  * @param formatName the target format (ex. png)
  * @param output the output stream to be used for writing
- * @return true if the image file was produced, false if there was an error
+ * @return true if the image file was produced, false if there was an 
error.
  * @throws IOException if an I/O error occurs
  */
 public static boolean writeImage(BufferedImage image, String formatName, 
OutputStream output)
@@ -90,32 +130,42 @@ public class ImageIOUtil
 }
 
 /**
- * Writes a buffered image to a file using the given image format.
+ * Writes a buffered image to a file using the given image format. See 
 
+ * {@link #writeImage(BufferedImage image, String formatName, 
+ * OutputStream output, int dpi, float quality)} for more details.
+ *
  * @param image the image to be written
  * @param formatName the target format (ex. png)
  * @param output the output stream to be used

svn commit: r1579414 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

2014-03-19 Thread tilman
Author: tilman
Date: Wed Mar 19 21:42:00 2014
New Revision: 1579414

URL: http://svn.apache.org/r1579414
Log:
PDFBOX-1975: fixed javadoc

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java?rev=1579414r1=1579413r2=1579414view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/ImageIOUtil.java 
Wed Mar 19 21:42:00 2014
@@ -57,7 +57,6 @@ public class ImageIOUtil
  * OutputStream output, int dpi, float quality)} for more details.
  *
  * @param image the image to be written
- * @param formatName the target format (ex. png) which is also the suffix
  * @param filename used to construct the filename for the individual image.
  * Its suffix will be used as the image format.
  * @param dpi the resolution in dpi (dots per inch)




svn commit: r1579990 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/pdmodel/graphics/image/ test/java/org/apache/pdfbox/pdmodel/graphics/image/ test/resources/org/apache/pdfbox/pdmodel/gra

2014-03-21 Thread tilman
Author: tilman
Date: Fri Mar 21 17:40:54 2014
New Revision: 1579990

URL: http://svn.apache.org/r1579990
Log:
PDFBOX-1990: added writing bitonal and grayscale images as single color samples 
and improved the unit test

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java

pdfbox/trunk/pdfbox/src/test/resources/org/apache/pdfbox/pdmodel/graphics/image/png.png

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java?rev=1579990r1=1579989r2=1579990view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 Fri Mar 21 17:40:54 2014
@@ -21,11 +21,13 @@ import java.awt.image.WritableRaster;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import javax.imageio.stream.MemoryCacheImageOutputStream;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.filter.Filter;
 import org.apache.pdfbox.filter.FilterFactory;
 import org.apache.pdfbox.pdmodel.PDDocument;
+import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
 import static 
org.apache.pdfbox.pdmodel.graphics.image.ImageFactory.getColorImage;
@@ -48,22 +50,54 @@ public class LosslessFactory
 public static PDImageXObject createFromImage(PDDocument document, 
BufferedImage image)
 throws IOException
 {
+int bpc;
+PDDeviceColorSpace deviceColorSpace;
+
 // extract color channel
 BufferedImage awtColorImage = getColorImage(image);
 
 ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
-//TODO use bit writing, indexed, etc
-int h = awtColorImage.getHeight();
-int w = awtColorImage.getWidth();
-for (int y = 0; y  h; ++y)
+//TODO: using the grayscale branch for BufferedImage.TYPE_BYTE_GRAY
+// fails the test. We use the RGB branch instead until this is fixed.
+if ((//image.getType() == BufferedImage.TYPE_BYTE_GRAY || 
+image.getType() == BufferedImage.TYPE_BYTE_BINARY)
+ image.getColorModel().getPixelSize() = 8)
+{
+MemoryCacheImageOutputStream mcios = new 
MemoryCacheImageOutputStream(bos);
+
+// grayscale images need one color per sample
+bpc = image.getColorModel().getPixelSize();
+deviceColorSpace = PDDeviceGray.INSTANCE;
+int h = awtColorImage.getHeight();
+int w = awtColorImage.getWidth();
+for (int y = 0; y  h; ++y)
+{
+for (int x = 0; x  w; ++x)
+{
+mcios.writeBits(awtColorImage.getRGB(x, y), bpc);
+}
+}
+mcios.writeBits(0, 7); // padding
+mcios.flush();
+mcios.close();
+}
+else
 {
-for (int x = 0; x  w; ++x)
+// RGB
+bpc = 8;
+deviceColorSpace = PDDeviceRGB.INSTANCE;
+int h = awtColorImage.getHeight();
+int w = awtColorImage.getWidth();
+for (int y = 0; y  h; ++y)
 {
-Color color = new Color(awtColorImage.getRGB(x, y));
-bos.write(color.getRed());
-bos.write(color.getGreen());
-bos.write(color.getBlue());
+for (int x = 0; x  w; ++x)
+{
+Color color = new Color(awtColorImage.getRGB(x, y));
+bos.write(color.getRed());
+bos.write(color.getGreen());
+bos.write(color.getBlue());
+}
 }
 }
 
@@ -79,8 +113,8 @@ public class LosslessFactory
 COSDictionary dict = pdImage.getCOSStream();
 dict.setItem(COSName.FILTER, COSName.FLATE_DECODE);
 
-pdImage.setColorSpace(PDDeviceRGB.INSTANCE); //TODO from awtColorImage
-pdImage.setBitsPerComponent(8); //TODO other sizes
+pdImage.setColorSpace(deviceColorSpace);
+pdImage.setBitsPerComponent(bpc);
 pdImage.setHeight(awtColorImage.getHeight());
 pdImage.setWidth(awtColorImage.getWidth());
 

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactoryTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox

svn commit: r1580201 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java

2014-03-22 Thread tilman
Author: tilman
Date: Sat Mar 22 12:22:31 2014
New Revision: 1580201

URL: http://svn.apache.org/r1580201
Log:
PDFBOX-1954: set initialization to CAP_BUTT as per PDF specification

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java?rev=1580201r1=1580200r2=1580201view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/state/PDGraphicsState.java
 Sat Mar 22 12:22:31 2014
@@ -46,7 +46,7 @@ public class PDGraphicsState implements 
 private PDColorSpace nonStrokingColorSpace = PDDeviceGray.INSTANCE;
 private PDTextState textState = new PDTextState();
 private float lineWidth = 1;
-private int lineCap = BasicStroke.CAP_SQUARE;
+private int lineCap = BasicStroke.CAP_BUTT;
 private int lineJoin = BasicStroke.JOIN_MITER;
 private float miterLimit = 10;
 private PDLineDashPattern lineDashPattern = new PDLineDashPattern();




svn commit: r1580443 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics: color/PDDeviceGray.java image/LosslessFactory.java

2014-03-22 Thread tilman
Author: tilman
Date: Sun Mar 23 04:31:50 2014
New Revision: 1580443

URL: http://svn.apache.org/r1580443
Log:
PDFBOX-1990: activate direct encoding of TYPE_BYTE_GRAY lossless images now 
that test works thanks to fix of PDDeviceGray (PDFBOX-1993 and PDFBOX-1955); 
removed unused imports in PDDeviceGray.

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java?rev=1580443r1=1580442r2=1580443view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/color/PDDeviceGray.java
 Sun Mar 23 04:31:50 2014
@@ -18,16 +18,7 @@ package org.apache.pdfbox.pdmodel.graphi
 
 import org.apache.pdfbox.cos.COSName;
 
-import java.awt.Color;
-import java.awt.Graphics2D;
-import java.awt.color.ColorSpace;
 import java.awt.image.BufferedImage;
-import java.awt.image.ColorConvertOp;
-import java.awt.image.ColorModel;
-import java.awt.image.ComponentColorModel;
-import java.awt.image.DataBuffer;
-import java.awt.image.IndexColorModel;
-import java.awt.Transparency;
 import java.awt.image.WritableRaster;
 import java.io.IOException;
 

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java?rev=1580443r1=1580442r2=1580443view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/LosslessFactory.java
 Sun Mar 23 04:31:50 2014
@@ -58,10 +58,8 @@ public class LosslessFactory
 
 ByteArrayOutputStream bos = new ByteArrayOutputStream();
 
-//TODO: using the grayscale branch for BufferedImage.TYPE_BYTE_GRAY
-// fails the test. We use the RGB branch instead until this is fixed.
-if ((//image.getType() == BufferedImage.TYPE_BYTE_GRAY || 
-image.getType() == BufferedImage.TYPE_BYTE_BINARY)
+if ((image.getType() == BufferedImage.TYPE_BYTE_GRAY
+|| image.getType() == BufferedImage.TYPE_BYTE_BINARY)
  image.getColorModel().getPixelSize() = 8)
 {
 MemoryCacheImageOutputStream mcios = new 
MemoryCacheImageOutputStream(bos);




svn commit: r1581244 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

2014-03-24 Thread tilman
Author: tilman
Date: Tue Mar 25 05:57:12 2014
New Revision: 1581244

URL: http://svn.apache.org/r1581244
Log:
PDFBOX-1998: different composite for rendering of /ImageMask true /Decode [ 1 0 
]

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=1581244r1=1581243r2=1581244view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
 Tue Mar 25 05:57:12 2014
@@ -187,9 +187,16 @@ public abstract class PDXObjectImage ext
 }
 
 graphics.fillRect(0, 0, baseImage.getWidth(), baseImage.getHeight());
-// assume default values ([0,1]) for the DecodeArray
-// TODO DecodeArray == [1,0]
-graphics.setComposite(AlphaComposite.DstIn);
+COSArray decode = getDecode();
+if (decode != null  decode.getInt(0) == 1)
+{
+// PDFBOX-1998
+graphics.setComposite(AlphaComposite.DstOut);
+}
+else
+{
+graphics.setComposite(AlphaComposite.DstIn);
+}
 graphics.drawImage(baseImage, null, 0, 0);
 graphics.dispose();
 return stencilMask;




svn commit: r1581420 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java

2014-03-25 Thread tilman
Author: tilman
Date: Tue Mar 25 17:18:39 2014
New Revision: 1581420

URL: http://svn.apache.org/r1581420
Log:
PDFBOX-1999: pass unfiltered JBIG2Globals stream to JBIG2 filter, as suggested 
by Dave Smith

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java?rev=1581420r1=1581419r2=1581420view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java 
Tue Mar 25 17:18:39 2014
@@ -89,7 +89,7 @@ final class JBIG2Filter extends Filter
 if (globals != null)
 {
 iis = ImageIO.createImageInputStream(
-new SequenceInputStream(globals.getFilteredStream(), 
encoded));
+new SequenceInputStream(globals.getUnfilteredStream(), 
encoded));
 reader.setInput(iis);
 }
 else




svn commit: r1581422 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java

2014-03-25 Thread tilman
Author: tilman
Date: Tue Mar 25 17:20:03 2014
New Revision: 1581422

URL: http://svn.apache.org/r1581422
Log:
PDFBOX-1999: pass unfiltered JBIG2Globals stream to JBIG2 filter, as suggested 
by Dave Smith

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java?rev=1581422r1=1581421r2=1581422view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/JBIG2Filter.java
 Tue Mar 25 17:20:03 2014
@@ -79,7 +79,7 @@ public class JBIG2Filter implements Filt
 }
 if (st != null)
 {
-compressedData = new SequenceInputStream(st.getFilteredStream(),
+compressedData = new SequenceInputStream(st.getUnfilteredStream(),
 compressedData);
 }
 ImageInputStream iis = ImageIO.createImageInputStream(compressedData);




svn commit: r1581603 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter: CCITTFaxFilter.java ccitt/TIFFFaxDecoder.java

2014-03-25 Thread tilman
Author: tilman
Date: Tue Mar 25 23:50:07 2014
New Revision: 1581603

URL: http://svn.apache.org/r1581603
Log:
PDFBOX-1074: implemented EncodedByteAlign = true for T6decode

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/TIFFFaxDecoder.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java?rev=1581603r1=1581602r2=1581603view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java 
Tue Mar 25 23:50:07 2014
@@ -91,6 +91,7 @@ final class CCITTFaxFilter extends Filte
 
 // decompress data
 int k = decodeParms.getInt(COSName.K, 0);
+boolean encodedByteAlign = 
decodeParms.getBoolean(COSName.ENCODED_BYTE_ALIGN, false);
 int arraySize = (cols + 7) / 8 * rows;
 TIFFFaxDecoder faxDecoder = new TIFFFaxDecoder(1, cols, rows);
 // TODO possible options??
@@ -112,7 +113,7 @@ final class CCITTFaxFilter extends Filte
 else if (k  0)
 {
 decompressed = new byte[arraySize];
-faxDecoder.decodeT6(decompressed, compressed, 0, rows, 
tiffOptions);
+faxDecoder.decodeT6(decompressed, compressed, 0, rows, 
tiffOptions, encodedByteAlign);
 }
 
 // invert bitmap

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/TIFFFaxDecoder.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/TIFFFaxDecoder.java?rev=1581603r1=1581602r2=1581603view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/TIFFFaxDecoder.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/TIFFFaxDecoder.java
 Tue Mar 25 23:50:07 2014
@@ -881,7 +881,8 @@ public final class TIFFFaxDecoder {
   byte[] compData,
   int startX,
   int height,
-  long tiffT6Options) {
+  long tiffT6Options,
+  boolean encodedByteAlign) {
 this.data = compData;
 compression = 4;
 
@@ -918,6 +919,11 @@ public final class TIFFFaxDecoder {
 int bitOffset;
 
 for (int lines = 0; lines  height; lines++) {
+if (encodedByteAlign  bitPointer != 0)
+{
+bitPointer = 0;
+bytePointer++;
+}
 // a0 has to be set just before the start of the scanline.
 a0 = -1;
 isWhite = true;




svn commit: r1581708 - in /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox: cos/COSName.java filter/CCITTFaxDecodeFilter.java filter/TIFFFaxDecoder.java

2014-03-26 Thread tilman
Author: tilman
Date: Wed Mar 26 06:42:33 2014
New Revision: 1581708

URL: http://svn.apache.org/r1581708
Log:
PDFBOX-1074: implemented EncodedByteAlign = true for T6decode

Modified:
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java?rev=1581708r1=1581707r2=1581708view=diff
==
--- pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java 
(original)
+++ pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/cos/COSName.java 
Wed Mar 26 06:42:33 2014
@@ -535,6 +535,10 @@ public final class COSName extends COSBa
 /**
  * A common COSName value.
  */
+public static final COSName ENCODED_BYTE_ALIGN = new 
COSName(EncodedByteAlign);
+/**
+ * A common COSName value.
+ */
 public static final COSName ENCODING = new COSName( Encoding );
 /**
  * A common COSName value.
@@ -562,6 +566,11 @@ public final class COSName extends COSBa
  * A common COSName value.
  */
 public static final COSName ENCRYPT_META_DATA = new COSName( 
EncryptMetadata );
+
+/**
+ * A common COSName value.
+ */
+public static final COSName END_OF_LINE = new COSName(EndOfLine);
 
 /**
  * A common COSName value.

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java?rev=1581708r1=1581707r2=1581708view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxDecodeFilter.java
 Wed Mar 26 06:42:33 2014
@@ -102,6 +102,7 @@ public class CCITTFaxDecodeFilter implem
 rows = Math.max(rows, height);
 }
 int k = decodeParms.getInt(COSName.K, 0);
+boolean encodedByteAlign = 
decodeParms.getBoolean(COSName.ENCODED_BYTE_ALIGN, false);
 int arraySize = (cols + 7) / 8 * rows;
 TIFFFaxDecoder faxDecoder = new TIFFFaxDecoder(1, cols, rows);
 // TODO possible options??
@@ -123,7 +124,7 @@ public class CCITTFaxDecodeFilter implem
 else if (k  0)
 {
 byte[] decompressed = new byte[arraySize];
-faxDecoder.decodeT6(decompressed, compressed, 0, rows, 
tiffOptions);
+faxDecoder.decodeT6(decompressed, compressed, 0, rows, 
tiffOptions, encodedByteAlign);
 result.write(decompressed);
 }
 }

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java?rev=1581708r1=1581707r2=1581708view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/TIFFFaxDecoder.java
 Wed Mar 26 06:42:33 2014
@@ -878,7 +878,8 @@ class TIFFFaxDecoder {
   byte[] compData,
   int startX,
   int height,
-  long tiffT6Options) {
+  long tiffT6Options,
+  boolean encodedByteAlign) {
 this.data = compData;
 compression = 4;
 
@@ -915,6 +916,11 @@ class TIFFFaxDecoder {
 int bitOffset;
 
 for (int lines = 0; lines  height; lines++) {
+if (encodedByteAlign  bitPointer != 0)
+{
+bitPointer = 0;
+bytePointer++;
+}
 // a0 has to be set just before the start of the scanline.
 a0 = -1;
 isWhite = true;




svn commit: r1581928 - in /pdfbox/trunk/pdfbox/src: main/java/org/apache/pdfbox/filter/ main/java/org/apache/pdfbox/filter/ccitt/ test/java/org/apache/pdfbox/filter/ccitt/

2014-03-26 Thread tilman
Author: tilman
Date: Wed Mar 26 16:48:02 2014
New Revision: 1581928

URL: http://svn.apache.org/r1581928
Log:
PDFBOX-1708: implemented EncodedByteAlign = true for 
CCITTFaxG31DDecodeInputStream

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/CCITTFaxG31DDecodeInputStream.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/filter/ccitt/TestCCITTFaxG31DDecodeInputStream.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java?rev=1581928r1=1581927r2=1581928view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java 
Wed Mar 26 16:48:02 2014
@@ -100,7 +100,7 @@ final class CCITTFaxFilter extends Filte
 if (k == 0)
 {
 InputStream in = new CCITTFaxG31DDecodeInputStream(
-new ByteArrayInputStream(compressed), cols);
+new ByteArrayInputStream(compressed), cols, 
encodedByteAlign);
 in = new FillOrderChangeInputStream(in); //Decorate to change fill 
order
 decompressed = IOUtils.toByteArray(in);
 in.close();

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/CCITTFaxG31DDecodeInputStream.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/CCITTFaxG31DDecodeInputStream.java?rev=1581928r1=1581927r2=1581928view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/CCITTFaxG31DDecodeInputStream.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/ccitt/CCITTFaxG31DDecodeInputStream.java
 Wed Mar 26 16:48:02 2014
@@ -35,6 +35,7 @@ public final class CCITTFaxG31DDecodeInp
 private InputStream source;
 private int columns;
 private int rows;
+private boolean encodedByteAlign;
 
 //for reading compressed bits
 private int bits;
@@ -60,27 +61,34 @@ public final class CCITTFaxG31DDecodeInp
 
 /**
  * Creates a new decoder.
+ * 
  * @param source the input stream containing the compressed data.
  * @param columns the number of columns
  * @param rows the number of rows (0 if undefined)
+ * @param encodedByteAlign true if each encoded scan line is filled 
+ * to a byte boundary, false if not
  */
-public CCITTFaxG31DDecodeInputStream(InputStream source, int columns, int 
rows)
+public CCITTFaxG31DDecodeInputStream(InputStream source, int columns, int 
rows, boolean encodedByteAlign)
 {
 this.source = source;
 this.columns = columns;
 this.rows = rows;
 this.decodedLine = new PackedBitArray(columns);
 this.decodedReadPos = this.decodedLine.getByteCount();
+this.encodedByteAlign = encodedByteAlign;
 }
 
 /**
  * Creates a new decoder.
+ * 
  * @param source the input stream containing the compressed data.
  * @param columns the number of columns
+ * @param encodedByteAlign true if each encoded scan line is filled 
+ * to a byte boundary, false if not
  */
-public CCITTFaxG31DDecodeInputStream(InputStream source, int columns)
+public CCITTFaxG31DDecodeInputStream(InputStream source, int columns, 
boolean encodedByteAlign)
 {
-this(source, columns, 0);
+this(source, columns, 0, encodedByteAlign);
 }
 
 /** {@inheritDoc} */
@@ -110,6 +118,10 @@ public final class CCITTFaxG31DDecodeInp
 
 private boolean decodeLine() throws IOException
 {
+if (encodedByteAlign  this.bitPos != 0)
+{
+readByte();
+}
 if (this.bits  0)
 {
 return false; //Shortcut after EOD

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/filter/ccitt/TestCCITTFaxG31DDecodeInputStream.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/filter/ccitt/TestCCITTFaxG31DDecodeInputStream.java?rev=1581928r1=1581927r2=1581928view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/filter/ccitt/TestCCITTFaxG31DDecodeInputStream.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/filter/ccitt/TestCCITTFaxG31DDecodeInputStream.java
 Wed Mar 26 16:48:02 2014
@@ -121,7 +121,7 @@ public class TestCCITTFaxG31DDecodeInput
 int rows = 2; //We actually have data for three rows. Just checking 
the restriction.
 
 CCITTFaxG31DDecodeInputStream decoder = new

svn commit: r1581986 - /pdfbox/trunk/parent/pom.xml

2014-03-26 Thread tilman
Author: tilman
Date: Wed Mar 26 18:23:31 2014
New Revision: 1581986

URL: http://svn.apache.org/r1581986
Log:
PDFBOX-2002: Show deprecation in the build

Modified:
pdfbox/trunk/parent/pom.xml

Modified: pdfbox/trunk/parent/pom.xml
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/parent/pom.xml?rev=1581986r1=1581985r2=1581986view=diff
==
--- pdfbox/trunk/parent/pom.xml (original)
+++ pdfbox/trunk/parent/pom.xml Wed Mar 26 18:23:31 2014
@@ -141,6 +141,7 @@
 plugin
 artifactIdmaven-compiler-plugin/artifactId
 configuration
+showDeprecationtrue/showDeprecation
 target1.6/target
 source1.6/source
 /configuration




svn commit: r1582785 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java

2014-03-28 Thread tilman
Author: tilman
Date: Fri Mar 28 15:58:24 2014
New Revision: 1582785

URL: http://svn.apache.org/r1582785
Log:
PDFBOX-457: ignore /Length value, not used by any other filter, and is wrong if 
this filter is not the first

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java?rev=1582785r1=1582784r2=1582785view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/CCITTFaxFilter.java 
Fri Mar 28 15:58:24 2014
@@ -53,27 +53,6 @@ final class CCITTFaxFilter extends Filte
 COSDictionary decodeParms = (COSDictionary)
 parameters.getDictionaryObject(COSName.DECODE_PARMS, 
COSName.DP);
 
-// get compressed data
-int length = parameters.getInt(COSName.LENGTH, -1);
-byte[] compressed;
-if (length != -1)
-{
-compressed = new byte[length];
-long written = IOUtils.populateBuffer(encoded, compressed);
-if (written != compressed.length)
-{
-log.warn(Buffer for compressed data did not match the length
-+  of the actual compressed data);
-}
-}
-else
-{
-// inline images don't provide the length of the stream so that
-// we have to read until the end of the stream to find out the 
length
-// the streams inline images are stored in are mostly small ones
-compressed = IOUtils.toByteArray(encoded);
-}
-
 // parse dimensions
 int cols = decodeParms.getInt(COSName.COLUMNS, 1728);
 int rows = decodeParms.getInt(COSName.ROWS, 0);
@@ -96,6 +75,7 @@ final class CCITTFaxFilter extends Filte
 TIFFFaxDecoder faxDecoder = new TIFFFaxDecoder(1, cols, rows);
 // TODO possible options??
 long tiffOptions = 0;
+byte[] compressed = IOUtils.toByteArray(encoded);
 byte[] decompressed = null;
 if (k == 0)
 {




svn commit: r1583195 - in /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools: PDFReader.java PDFToImage.java

2014-03-30 Thread tilman
Author: tilman
Date: Sun Mar 30 20:39:52 2014
New Revision: 1583195

URL: http://svn.apache.org/r1583195
Log:
PDFBOX-2002: changed two deprecated calls to ImageIOUtils

Modified:
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java?rev=1583195r1=1583194r2=1583195view=diff
==
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java 
(original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java Sun 
Mar 30 20:39:52 2014
@@ -356,7 +356,7 @@ public class PDFReader extends JFrame
 imageFilename = imageFilename.substring(0, 
imageFilename.length() - 4);
 }
 imageFilename += _ + (currentPage + 1);
-ImageIOUtil.writeImage(pageAsImage, png, imageFilename, 300);
+ImageIOUtil.writeImage(pageAsImage, imageFilename, 300);
 }
 catch (IOException exception)
 {

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java?rev=1583195r1=1583194r2=1583195view=diff
==
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java 
(original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java 
Sun Mar 30 20:39:52 2014
@@ -247,7 +247,7 @@ public class PDFToImage
 {
 BufferedImage image = renderer.renderImageWithDPI(i, dpi, 
imageType);
 String fileName = outputPrefix + (i + 1);
-success = ImageIOUtil.writeImage(image, imageFormat, 
fileName, dpi);
+success = ImageIOUtil.writeImage(image, fileName, dpi);
 }
 
 if (!success)




svn commit: r1583201 - in /pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox: ./ schema/ type/

2014-03-30 Thread tilman
Author: tilman
Date: Sun Mar 30 21:10:06 2014
New Revision: 1583201

URL: http://svn.apache.org/r1583201
Log:
PDFBOX-2002: replaced deprecated junit import with the current one

Modified:

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractXMPSchemaTest.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AdobePDFErrorsTest.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/BasicJobTicketSchemaTest.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/PDFAIdentificationOthersTest.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/XMPSchemaTest.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/type/AbstractStructuredTypeTester.java
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/type/AttributeTest.java

pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/type/TestAbstractStructuredType.java

Modified: 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java?rev=1583201r1=1583200r2=1583201view=diff
==
--- 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java
 (original)
+++ 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/DoubleSameTypeSchemaTest.java
 Sun Mar 30 21:10:06 2014
@@ -23,12 +23,10 @@ package org.apache.xmpbox;
 
 import java.util.ArrayList;
 import java.util.List;
-
-import junit.framework.Assert;
-
 import org.apache.xmpbox.schema.DublinCoreSchema;
 import org.apache.xmpbox.schema.XMPSchema;
 import org.apache.xmpbox.type.StructuredType;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 

Modified: 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java?rev=1583201r1=1583200r2=1583201view=diff
==
--- pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java 
(original)
+++ pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/XMPMetaDataTest.java 
Sun Mar 30 21:10:06 2014
@@ -22,11 +22,9 @@
 package org.apache.xmpbox;
 
 import java.util.List;
-
-import junit.framework.Assert;
-
 import org.apache.xmpbox.schema.XMPSchema;
 import org.apache.xmpbox.xml.XmpSerializationException;
+import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 import org.w3c.dom.Document;

Modified: 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java?rev=1583201r1=1583200r2=1583201view=diff
==
--- 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java
 (original)
+++ 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractSchemaTester.java
 Sun Mar 30 21:10:06 2014
@@ -23,9 +23,6 @@ package org.apache.xmpbox.schema;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.util.List;
-
-import junit.framework.Assert;
-
 import org.apache.xmpbox.XMPMetadata;
 import org.apache.xmpbox.type.AbstractSimpleProperty;
 import org.apache.xmpbox.type.ArrayProperty;
@@ -34,6 +31,7 @@ import org.apache.xmpbox.type.TypeMappin
 import org.apache.xmpbox.type.TypeTestingHelper;
 import org.apache.xmpbox.type.Types;
 import org.apache.xmpbox.xml.DomXmpParser;
+import org.junit.Assert;
 import org.junit.Test;
 
 public abstract class AbstractSchemaTester

Modified: 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractXMPSchemaTest.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractXMPSchemaTest.java?rev=1583201r1=1583200r2=1583201view=diff
==
--- 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractXMPSchemaTest.java
 (original)
+++ 
pdfbox/trunk/xmpbox/src/test/java/org/apache/xmpbox/schema/AbstractXMPSchemaTest.java
 Sun Mar 30 21:10:06 2014
@@ -27,9 +27,6 @@ import java.util.Arrays;
 import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
-
-import junit.framework.Assert;
-
 import org.apache.xmpbox.XMPMetadata;
 import org.apache.xmpbox.type.AgentNameType;
 import org.apache.xmpbox.type.BooleanType;
@@ -43,6 +40,7 @@ import org.apache.xmpbox.type.TypeMappin
 import org.apache.xmpbox.type.Types;
 import

svn commit: r1583204 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive: annotation/PDAnnotationPopup.java documentnavigation/destination/PDPageDestination.java documentnavi

2014-03-30 Thread tilman
Author: tilman
Date: Sun Mar 30 21:36:49 2014
New Revision: 1583204

URL: http://svn.apache.org/r1583204
Log:
PDFBOX-2002: replaced deprecated getDictionaryObject() call with the current one

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotationPopup.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/destination/PDPageDestination.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineNode.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotationPopup.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotationPopup.java?rev=1583204r1=1583203r2=1583204view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotationPopup.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDAnnotationPopup.java
 Sun Mar 30 21:36:49 2014
@@ -101,8 +101,8 @@ public class PDAnnotationPopup extends P
 PDAnnotationMarkup am = null;
 try
 {
-am = (PDAnnotationMarkup)
-PDAnnotation.createAnnotation( 
getDictionary().getDictionaryObject( Parent, P ) );
+am = (PDAnnotationMarkup) PDAnnotation.createAnnotation(
+getDictionary().getDictionaryObject(COSName.PARENT, 
COSName.P));
 }
 catch (IOException ioe)
 {

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/destination/PDPageDestination.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/destination/PDPageDestination.java?rev=1583204r1=1583203r2=1583204view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/destination/PDPageDestination.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/destination/PDPageDestination.java
 Sun Mar 30 21:36:49 2014
@@ -22,6 +22,7 @@ import java.util.List;
 import org.apache.pdfbox.cos.COSArray;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.cos.COSNumber;
 
 import org.apache.pdfbox.pdmodel.PDPage;
@@ -133,8 +134,9 @@ public abstract class PDPageDestination 
 else if (page instanceof COSDictionary)
 {
 COSBase parent = page;
-while (((COSDictionary) parent).getDictionaryObject(Parent, 
P) != null) {
-parent = ((COSDictionary) parent).getDictionaryObject( 
Parent, P );
+while (((COSDictionary) 
parent).getDictionaryObject(COSName.PARENT, COSName.P) != null)
+{
+parent = ((COSDictionary) 
parent).getDictionaryObject(COSName.PARENT, COSName.P);
 }
 // now parent is the pages node
 PDPageNode pages = new PDPageNode((COSDictionary) parent);

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineNode.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineNode.java?rev=1583204r1=1583203r2=1583204view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineNode.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/documentnavigation/outline/PDOutlineNode.java
 Sun Mar 30 21:36:49 2014
@@ -18,6 +18,7 @@ package org.apache.pdfbox.pdmodel.intera
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.cos.COSName;
 
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 
@@ -81,16 +82,16 @@ public class PDOutlineNode implements CO
 protected PDOutlineNode getParent()
 {
 PDOutlineNode retval = null;
-COSDictionary parent = (COSDictionary)node.getDictionaryObject( 
Parent, P );
-if( parent != null )
+COSDictionary parent = (COSDictionary) 
node.getDictionaryObject(COSName.PARENT, COSName.P);
+if (parent != null)
 {
-if( parent.getDictionaryObject( Parent, P ) == null )
+if (parent.getDictionaryObject(COSName.PARENT, COSName.P) == null)
 {
-retval = new PDDocumentOutline( parent );
+retval

svn commit: r1583208 - in /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox: encryption/TestPublicKeyEncryption.java pdmodel/common/TestPDNameTreeNode.java pdmodel/common/TestPDNumberTreeNode.java

2014-03-30 Thread tilman
Author: tilman
Date: Sun Mar 30 21:47:37 2014
New Revision: 1583208

URL: http://svn.apache.org/r1583208
Log:
PDFBOX-2002: replaced deprecated junit import

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNumberTreeNode.java

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestTTFParser.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java?rev=1583208r1=1583207r2=1583208view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/encryption/TestPublicKeyEncryption.java
 Sun Mar 30 21:47:37 2014
@@ -24,15 +24,13 @@ import java.security.KeyStore;
 import java.security.NoSuchAlgorithmException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
 import org.apache.pdfbox.pdmodel.encryption.PublicKeyDecryptionMaterial;
 import org.apache.pdfbox.pdmodel.encryption.PublicKeyProtectionPolicy;
 import org.apache.pdfbox.pdmodel.encryption.PublicKeyRecipient;
+import junit.framework.TestCase;
+import org.junit.Assert;
 
 /**
  * Tests for public key encryption.

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java?rev=1583208r1=1583207r2=1583208view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNameTreeNode.java
 Sun Mar 30 21:47:37 2014
@@ -20,11 +20,9 @@ import java.io.IOException;
 import java.util.List;
 import java.util.SortedMap;
 import java.util.TreeMap;
-
-import org.apache.pdfbox.cos.COSInteger;
-
-import junit.framework.Assert;
 import junit.framework.TestCase;
+import org.apache.pdfbox.cos.COSInteger;
+import org.junit.Assert;
 
 /**
  * A test case for PDNameTreeNode.

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNumberTreeNode.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNumberTreeNode.java?rev=1583208r1=1583207r2=1583208view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNumberTreeNode.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/common/TestPDNumberTreeNode.java
 Sun Mar 30 21:47:37 2014
@@ -21,12 +21,10 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
-
-import junit.framework.Assert;
 import junit.framework.TestCase;
-
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSInteger;
+import org.junit.Assert;
 
 /**
  * A test case for PDNumberTreeNode.

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestTTFParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestTTFParser.java?rev=1583208r1=1583207r2=1583208view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestTTFParser.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/font/TestTTFParser.java
 Sun Mar 30 21:47:37 2014
@@ -18,9 +18,6 @@ package org.apache.pdfbox.pdmodel.font;
 
 import java.io.IOException;
 import java.io.InputStream;
-
-import junit.framework.Assert;
-
 import org.apache.fontbox.ttf.CMAPEncodingEntry;
 import org.apache.fontbox.ttf.CMAPTable;
 import org.apache.fontbox.ttf.NameRecord;
@@ -29,6 +26,7 @@ import org.apache.fontbox.ttf.TTFParser;
 import org.apache.fontbox.ttf.TrueTypeFont;
 import org.apache.pdfbox.encoding.Encoding;
 import org.apache.pdfbox.encoding.WinAnsiEncoding;
+import org.junit.Assert;
 import org.junit.Test;
 
 /**




svn commit: r1583212 - /pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java

2014-03-30 Thread tilman
Author: tilman
Date: Sun Mar 30 22:02:59 2014
New Revision: 1583212

URL: http://svn.apache.org/r1583212
Log:
PDFBOX-2002: replaced deprecated COSInteger constructors

Modified:

pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java

Modified: 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java?rev=1583212r1=1583211r2=1583212view=diff
==
--- 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java
 (original)
+++ 
pdfbox/trunk/preflight/src/test/java/org/apache/pdfbox/preflight/utils/TestCOSUtils.java
 Sun Mar 30 22:02:59 2014
@@ -40,7 +40,6 @@ import org.apache.pdfbox.cos.COSString;
 import org.apache.pdfbox.io.RandomAccess;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.persistence.util.COSObjectKey;
-import org.apache.pdfbox.preflight.utils.COSUtils;
 import org.junit.Test;
 
 public class TestCOSUtils
@@ -51,9 +50,9 @@ public class TestCOSUtils
 {
 try
 {
-COSObject co = new COSObject(new COSInteger(10));
+COSObject co = new COSObject(COSInteger.get(10));
 co.setGenerationNumber(COSInteger.ZERO);
-co.setObjectNumber(new COSInteger(10));
+co.setObjectNumber(COSInteger.get(10));
 
 assertFalse(COSUtils.isInteger(co, new IOCOSDocument()));
 
@@ -75,7 +74,7 @@ public class TestCOSUtils
 {
 COSObject co = new COSObject(new COSFloat(10.0f));
 co.setGenerationNumber(COSInteger.ZERO);
-co.setObjectNumber(new COSInteger(10));
+co.setObjectNumber(COSInteger.get(10));
 
 assertFalse(COSUtils.isFloat(co, new IOCOSDocument()));
 
@@ -97,7 +96,7 @@ public class TestCOSUtils
 {
 COSObject co = new COSObject(new COSString());
 co.setGenerationNumber(COSInteger.ZERO);
-co.setObjectNumber(new COSInteger(10));
+co.setObjectNumber(COSInteger.get(10));
 
 assertFalse(COSUtils.isString(co, new IOCOSDocument()));
 
@@ -119,7 +118,7 @@ public class TestCOSUtils
 {
 COSObject co = new COSObject(new COSStream(null));
 co.setGenerationNumber(COSInteger.ZERO);
-co.setObjectNumber(new COSInteger(10));
+co.setObjectNumber(COSInteger.get(10));
 
 assertFalse(COSUtils.isStream(co, new IOCOSDocument()));
 
@@ -141,7 +140,7 @@ public class TestCOSUtils
 {
 COSObject co = new COSObject(new COSDictionary());
 co.setGenerationNumber(COSInteger.ZERO);
-co.setObjectNumber(new COSInteger(10));
+co.setObjectNumber(COSInteger.get(10));
 
 assertFalse(COSUtils.isDictionary(co, new IOCOSDocument()));
 
@@ -163,7 +162,7 @@ public class TestCOSUtils
 {
 COSObject co = new COSObject(new COSArray());
 co.setGenerationNumber(COSInteger.ZERO);
-co.setObjectNumber(new COSInteger(10));
+co.setObjectNumber(COSInteger.get(10));
 
 assertFalse(COSUtils.isArray(co, new IOCOSDocument()));
 




svn commit: r1583219 - in /pdfbox/trunk: examples/src/main/java/org/apache/pdfbox/examples/fdf/ examples/src/main/java/org/apache/pdfbox/examples/lucene/ examples/src/main/java/org/apache/pdfbox/examp

2014-03-30 Thread tilman
Author: tilman
Date: Sun Mar 30 22:46:15 2014
New Revision: 1583219

URL: http://svn.apache.org/r1583219
Log:
PDFBOX-2002: replaced deprecated calls to document.decrypt() with calls to new 
security layer

Modified:

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/fdf/PrintFields.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/LucenePDFDocument.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractMetadata.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractTTFFonts.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/PrintBookmarks.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/PrintDocumentMetaData.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/signature/ShowSignature.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/ExtractTextByArea.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintImageLocations.java

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/util/PrintTextLocations.java

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFDebugger.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFSplit.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java

pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java

Modified: 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/fdf/PrintFields.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/fdf/PrintFields.java?rev=1583219r1=1583218r2=1583219view=diff
==
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/fdf/PrintFields.java
 (original)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/fdf/PrintFields.java
 Sun Mar 30 22:46:15 2014
@@ -24,6 +24,7 @@ import org.apache.pdfbox.pdmodel.PDDocum
 import org.apache.pdfbox.pdmodel.PDDocumentCatalog;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
+import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
 import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
 import org.apache.pdfbox.pdmodel.interactive.form.PDField;
 import org.apache.pdfbox.pdmodel.interactive.form.PDSignatureField;
@@ -125,7 +126,8 @@ public class PrintFields
 {
 try
 {
-pdf.decrypt();
+StandardDecryptionMaterial sdm = new 
StandardDecryptionMaterial();
+pdf.openProtection(sdm);
 }
 catch (InvalidPasswordException e)
 {

Modified: 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/LucenePDFDocument.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/LucenePDFDocument.java?rev=1583219r1=1583218r2=1583219view=diff
==
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/LucenePDFDocument.java
 (original)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/LucenePDFDocument.java
 Sun Mar 30 22:46:15 2014
@@ -37,6 +37,7 @@ import org.apache.lucene.document.TextFi
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.pdmodel.PDDocumentInformation;
 import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
+import org.apache.pdfbox.pdmodel.encryption.StandardDecryptionMaterial;
 import org.apache.pdfbox.util.PDFTextStripper;
 
 /**
@@ -441,7 +442,8 @@ public class LucenePDFDocument
 if (pdfDocument.isEncrypted())
 {
 // Just try using the default password and move on
-pdfDocument.decrypt();
+StandardDecryptionMaterial sdm = new 
StandardDecryptionMaterial();
+pdfDocument.openProtection(sdm);
 }
 }
 

Modified: 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/ExtractEmbeddedFiles.java?rev=1583219r1=1583218r2=1583219view=diff

svn commit: r1583220 - /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java

2014-03-30 Thread tilman
Author: tilman
Date: Sun Mar 30 22:52:09 2014
New Revision: 1583220

URL: http://svn.apache.org/r1583220
Log:
PDFBOX-2002: fixed mistake from last commit

Modified:

pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java?rev=1583220r1=1583219r2=1583220view=diff
==
--- 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java 
(original)
+++ 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/WriteDecodedDoc.java 
Sun Mar 30 22:52:09 2014
@@ -93,7 +93,7 @@ public class WriteDecodedDoc
 {
 try
 {
-StandardDecryptionMaterial sdm = new 
StandardDecryptionMaterial();
+StandardDecryptionMaterial sdm = new 
StandardDecryptionMaterial(password);
 doc.openProtection(sdm);
 doc.setAllSecurityToBeRemoved(true);
 }




svn commit: r1583377 - in /pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools: PDFReader.java PDFToImage.java

2014-03-31 Thread tilman
Author: tilman
Date: Mon Mar 31 17:27:21 2014
New Revision: 1583377

URL: http://svn.apache.org/r1583377
Log:
PDFBOX-2002: add suffix

Modified:
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java?rev=1583377r1=1583376r2=1583377view=diff
==
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java 
(original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFReader.java Mon 
Mar 31 17:27:21 2014
@@ -357,7 +357,7 @@ public class PDFReader extends JFrame
 imageFilename = imageFilename.substring(0, 
imageFilename.length() - 4);
 }
 imageFilename += _ + (currentPage + 1);
-ImageIOUtil.writeImage(pageAsImage, imageFilename, 300);
+ImageIOUtil.writeImage(pageAsImage, imageFilename + .png, 300);
 }
 catch (IOException exception)
 {

Modified: 
pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java?rev=1583377r1=1583376r2=1583377view=diff
==
--- pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java 
(original)
+++ pdfbox/trunk/tools/src/main/java/org/apache/pdfbox/tools/PDFToImage.java 
Mon Mar 31 17:27:21 2014
@@ -248,7 +248,7 @@ public class PDFToImage
 for (int i = startPage - 1; i  endPage  i  numPages; i++)
 {
 BufferedImage image = renderer.renderImageWithDPI(i, dpi, 
imageType);
-String fileName = outputPrefix + (i + 1);
+String fileName = outputPrefix + (i + 1) + . + 
imageFormat;
 success = ImageIOUtil.writeImage(image, fileName, dpi);
 }
 




svn commit: r1584116 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

2014-04-02 Thread tilman
Author: tilman
Date: Wed Apr  2 18:14:57 2014
New Revision: 1584116

URL: http://svn.apache.org/r1584116
Log:
PDFBOX-2008: fix error in check of max generation number

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1584116r1=1584115r2=1584116view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java 
Wed Apr  2 18:14:57 2014
@@ -1628,7 +1628,7 @@ public abstract class BaseParser
 protected int readGenerationNumber() throws IOException
 {
 int retval = readInt();
-if(retval  0 || retval = GENERATION_NUMBER_THRESHOLD) {
+if(retval  0 || retval  GENERATION_NUMBER_THRESHOLD) {
 throw new IOException(Generation Number ' + retval + ' has more 
than 5 digits);
 }
 return retval;




svn commit: r1584117 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

2014-04-02 Thread tilman
Author: tilman
Date: Wed Apr  2 18:15:56 2014
New Revision: 1584117

URL: http://svn.apache.org/r1584117
Log:
PDFBOX-2008: fix error in check of max generation number

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java?rev=1584117r1=1584116r2=1584117view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdfparser/BaseParser.java
 Wed Apr  2 18:15:56 2014
@@ -1640,7 +1640,7 @@ public abstract class BaseParser
 protected int readGenerationNumber() throws IOException
 {
 int retval = readInt();
-if(retval  0 || retval = GENERATION_NUMBER_THRESHOLD) {
+if(retval  0 || retval  GENERATION_NUMBER_THRESHOLD) {
 throw new IOException(Generation Number ' + retval + ' has more 
than 5 digits);
 }
 return retval;




svn commit: r1584123 - /pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java

2014-04-02 Thread tilman
Author: tilman
Date: Wed Apr  2 18:35:09 2014
New Revision: 1584123

URL: http://svn.apache.org/r1584123
Log:
PDFBOX-2012: slight optimizations as suggested by Philip Helger

Modified:

pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java

Modified: 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java?rev=1584123r1=1584122r2=1584123view=diff
==
--- 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java
 (original)
+++ 
pdfbox/trunk/fontbox/src/main/java/org/apache/fontbox/ttf/CMAPEncodingEntry.java
 Wed Apr  2 18:35:09 2014
@@ -436,7 +436,7 @@ public class CMAPEncodingEntry
 for (int i = 0; i  256; i++)
 {
 subHeaderKeys[i] = data.readUnsignedShort();
-maxSubHeaderIndex = Math.max(maxSubHeaderIndex, (int) 
(subHeaderKeys[i] / 8));
+maxSubHeaderIndex = Math.max(maxSubHeaderIndex, subHeaderKeys[i] / 
8);
 }
 
 //  Read all SubHeaders to avoid useless seek on DataSource
@@ -550,20 +550,14 @@ public class CMAPEncodingEntry
 
 /**
  * Returns the GlyphId linked with the given character code.
- * 
+ *
  * @param characterCode the given character code to be mapped
  * @return glyphId the corresponding glyph id for the given character code
  */
 public int getGlyphId(int characterCode)
 {
-if (characterCodeToGlyphId.containsKey(characterCode))
-{
-return characterCodeToGlyphId.get(characterCode);
-}
-else
-{
-return 0;
-}
+Integer glyphId = characterCodeToGlyphId.get(characterCode);
+return glyphId == null ? 0 : glyphId.intValue();
 }
 
 /**




svn commit: r1584127 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java

2014-04-02 Thread tilman
Author: tilman
Date: Wed Apr  2 18:48:58 2014
New Revision: 1584127

URL: http://svn.apache.org/r1584127
Log:
PDFBOX-2010: getDescendantFont() now public as wished by Philip Helger; added 
@override, reformatted

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java?rev=1584127r1=1584126r2=1584127view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/font/PDType0Font.java
 Wed Apr  2 18:48:58 2014
@@ -27,8 +27,8 @@ import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
 
 /**
- * This is implementation of the Type0 Font.
- * See a 
href=https://issues.apache.org/jira/browse/PDFBOX-605;PDFBOX-605/a
+ * This is implementation of the Type0 Font. See a
+ * href=https://issues.apache.org/jira/browse/PDFBOX-605;PDFBOX-605/a
  * for the related improvement issue.
  *
  * @author a href=mailto:b...@benlitchfield.com;Ben Litchfield/a
@@ -46,29 +46,31 @@ public class PDType0Font extends PDSimpl
 private PDFont descendantFont;
 private COSDictionary descendantFontDictionary;
 private Font awtFont;
+
 /**
  * Constructor.
  */
 public PDType0Font()
 {
 super();
-font.setItem( COSName.SUBTYPE, COSName.TYPE0 );
+font.setItem(COSName.SUBTYPE, COSName.TYPE0);
 }
 
 /**
  * Constructor.
  *
- * @param fontDictionary The font dictionary according to the PDF 
specification.
+ * @param fontDictionary The font dictionary according to the PDF
+ * specification.
  */
-public PDType0Font( COSDictionary fontDictionary )
+public PDType0Font(COSDictionary fontDictionary)
 {
-super( fontDictionary );
-descendantFontDictionary = 
(COSDictionary)getDescendantFonts().getObject( 0 );
+super(fontDictionary);
+descendantFontDictionary = (COSDictionary) 
getDescendantFonts().getObject(0);
 if (descendantFontDictionary != null)
 {
 try
 {
-descendantFont = PDFontFactory.createFont( 
descendantFontDictionary );
+descendantFont = 
PDFontFactory.createFont(descendantFontDictionary);
 }
 catch (IOException exception)
 {
@@ -80,16 +82,17 @@ public class PDType0Font extends PDSimpl
 /**
  * {@inheritDoc}
  */
+@Override
 public Font getawtFont() throws IOException
 {
 if (awtFont == null)
 {
 if (descendantFont != null)
 {
-awtFont = ((PDSimpleFont)descendantFont).getawtFont();
+awtFont = ((PDSimpleFont) descendantFont).getawtFont();
 if (awtFont != null)
 {
-
setIsFontSubstituted(((PDSimpleFont)descendantFont).isFontSubstituted());
+setIsFontSubstituted(((PDSimpleFont) 
descendantFont).isFontSubstituted());
 /*
  * Fix Oracle JVM Crashes.
  * Tested with Oracle JRE 6.0_45-b06 and 7.0_21-b11
@@ -100,8 +103,8 @@ public class PDType0Font extends PDSimpl
 if (awtFont == null)
 {
 awtFont = FontManager.getStandardFont();
-LOG.info(Using font +awtFont.getName()
-+  instead of 
+descendantFont.getFontDescriptor().getFontName());
+LOG.info(Using font  + awtFont.getName()
++  instead of  + 
descendantFont.getFontDescriptor().getFontName());
 setIsFontSubstituted(true);
 }
 }
@@ -115,9 +118,10 @@ public class PDType0Font extends PDSimpl
  *
  * @throws IOException If there is an error getting the bounding box.
  */
+@Override
 public PDRectangle getFontBoundingBox() throws IOException
 {
-throw new RuntimeException( Not yet implemented );
+throw new RuntimeException(Not yet implemented);
 }
 
 /**
@@ -131,9 +135,9 @@ public class PDType0Font extends PDSimpl
  *
  * @throws IOException If an error occurs while parsing.
  */
-public float getFontWidth( byte[] c, int offset, int length ) throws 
IOException
+public float getFontWidth(byte[] c, int offset, int length) throws 
IOException
 {
-return descendantFont.getFontWidth( c, offset, length );
+return descendantFont.getFontWidth(c, offset, length);
 }
 
 /**
@@ -147,9 +151,10 @@ public class PDType0Font extends PDSimpl
  *
  * @throws IOException If an error occurs while

svn commit: r1584125 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java

2014-04-02 Thread tilman
Author: tilman
Date: Wed Apr  2 18:40:59 2014
New Revision: 1584125

URL: http://svn.apache.org/r1584125
Log:
PDFBOX-1975: fix for JDK5

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java?rev=1584125r1=1584124r2=1584125view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java 
(original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/JPEGUtil.java 
Wed Apr  2 18:40:59 2014
@@ -67,22 +67,22 @@ class JPEGUtil
 {
 jfifChild = (Element) jfifNodeList.item(0);
 }
-if (jfifChild.getAttribute(majorVersion).isEmpty())
+if (jfifChild.getAttribute(majorVersion).length() == 0)
 {
 jfifChild.setAttribute(majorVersion, 1);
 }
-if (jfifChild.getAttribute(minorVersion).isEmpty())
+if (jfifChild.getAttribute(minorVersion).length() == 0)
 {
 jfifChild.setAttribute(minorVersion, 2);
 }
 jfifChild.setAttribute(resUnits, 1); // inch
 jfifChild.setAttribute(Xdensity, Integer.toString(dpi));
 jfifChild.setAttribute(Ydensity, Integer.toString(dpi));
-if (jfifChild.getAttribute(thumbWidth).isEmpty())
+if (jfifChild.getAttribute(thumbWidth).length() == 0)
 {
 jfifChild.setAttribute(thumbWidth, 0);
 }
-if (jfifChild.getAttribute(thumbHeight).isEmpty())
+if (jfifChild.getAttribute(thumbHeight).length() == 0)
 {
 jfifChild.setAttribute(thumbHeight, 0);
 }




svn commit: r1584142 - /pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

2014-04-02 Thread tilman
Author: tilman
Date: Wed Apr  2 19:38:40 2014
New Revision: 1584142

URL: http://svn.apache.org/r1584142
Log:
PDFBOX-1975: added an extra test for ImageIOUtil.writeImage()

Modified:

pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java

Modified: 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java?rev=1584142r1=1584141r2=1584142view=diff
==
--- 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/test/java/org/apache/pdfbox/util/TestImageIOUtils.java 
Wed Apr  2 19:38:40 2014
@@ -237,7 +237,8 @@ public class TestImageIOUtils extends Te
 BufferedImage image = renderer.renderImageWithDPI(0, dpi, imageType);
 String fileName = outputPrefix + 1;
 LOG.info(Writing:  + fileName + . + imageFormat);
-ImageIOUtil.writeImage(image, fileName + . + imageFormat, 
Math.round(dpi));
+boolean res = ImageIOUtil.writeImage(image, fileName + . + 
imageFormat, Math.round(dpi));
+assertTrue(ImageIOUtil.writeImage() failed for file  + fileName, 
res);
 if (jpg.equals(imageFormat) || gif.equals(imageFormat))
 {
 // jpeg is lossy, gif has 256 colors, 




svn commit: r1584255 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSArrayList.java

2014-04-02 Thread tilman
Author: tilman
Date: Thu Apr  3 03:42:14 2014
New Revision: 1584255

URL: http://svn.apache.org/r1584255
Log:
PDFBOX-2002: delete deprecated methods

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSArrayList.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSArrayList.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSArrayList.java?rev=1584255r1=1584254r2=1584255view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSArrayList.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/COSArrayList.java
 Thu Apr  3 03:42:14 2014
@@ -94,16 +94,9 @@ public class COSArrayListE implements 
 }
 
 /**
- * @deprecated use the {@link #COSArrayList(Object, COSBase, 
COSDictionary, COSName)} method instead
- */
-public COSArrayList( E actualObject, COSBase item, COSDictionary 
dictionary, String dictionaryKey )
-{
-this( actualObject, item, dictionary, 
COSName.getPDFName(dictionaryKey) );
-}
-
-/**
  * {@inheritDoc}
  */
+@Override
 public int size()
 {
 return actual.size();
@@ -112,6 +105,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean isEmpty()
 {
 return actual.isEmpty();
@@ -120,6 +114,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean contains(Object o)
 {
 return actual.contains(o);
@@ -128,6 +123,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public IteratorE iterator()
 {
 return actual.iterator();
@@ -136,6 +132,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public Object[] toArray()
 {
 return actual.toArray();
@@ -144,6 +141,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public XX[] toArray(X[] a)
 {
 return actual.toArray(a);
@@ -153,6 +151,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean add(E o)
 {
 //when adding if there is a parentDict then change the item
@@ -188,6 +187,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean remove(Object o)
 {
 boolean retval = true;
@@ -207,6 +207,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean containsAll(Collection? c)
 {
 return actual.containsAll( c );
@@ -215,6 +216,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean addAll(Collection? extends E c)
 {
 //when adding if there is a parentDict then change the item
@@ -233,6 +235,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean addAll(int index, Collection? extends E c)
 {
 //when adding if there is a parentDict then change the item
@@ -476,6 +479,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean removeAll(Collection? c)
 {
 array.removeAll( toCOSObjectList( c ) );
@@ -485,6 +489,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean retainAll(Collection? c)
 {
 array.retainAll( toCOSObjectList( c ) );
@@ -494,6 +499,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public void clear()
 {
 //when adding if there is a parentDict then change the item
@@ -509,6 +515,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public boolean equals(Object o)
 {
 return actual.equals( o );
@@ -517,6 +524,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public int hashCode()
 {
 return actual.hashCode();
@@ -525,6 +533,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public E get(int index)
 {
 return actual.get( index );
@@ -534,6 +543,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public E set(int index, E element)
 {
 if( element instanceof String )
@@ -565,6 +575,7 @@ public class COSArrayListE implements 
 /**
  * {@inheritDoc}
  */
+@Override
 public void add(int index, E element)
 {
 //when adding

svn commit: r1584256 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java

2014-04-02 Thread tilman
Author: tilman
Date: Thu Apr  3 03:52:33 2014
New Revision: 1584256

URL: http://svn.apache.org/r1584256
Log:
PDFBOX-2002: delete deprecated methods

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java?rev=1584256r1=1584255r2=1584256view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java 
(original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFTextStripper.java 
Thu Apr  3 03:52:33 2014
@@ -274,20 +274,9 @@ public class PDFTextStripper extends PDF
 }
 
 /**
- * @deprecated
- * @see PDFTextStripper#writeText( PDDocument, Writer )
- * @param doc The document to extract the text.
- * @param outputStream The stream to write the text to.
- * @throws IOException If there is an error extracting the text.
- */
-public void writeText( COSDocument doc, Writer outputStream ) throws 
IOException
-{
-writeText( new PDDocument( doc ), outputStream );
-}
-
-/**
  * {@inheritDoc}
  */
+@Override
 public void resetEngine()
 {
 super.resetEngine();
@@ -900,6 +889,7 @@ public class PDFTextStripper extends PDF
  *
  * @param text The text to process.
  */
+@Override
 protected void processTextPosition( TextPosition text )
 {
 boolean showCharacter = true;
@@ -1569,6 +1559,7 @@ public class PDFTextStripper extends PDF
  * 
  * @return the reversed string
  */
+@Override
 public String inspectFontEncoding(String str)
 {
 if (!sortByPosition || str == null || str.length()  2)




svn commit: r1584837 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java

2014-04-04 Thread tilman
Author: tilman
Date: Fri Apr  4 17:56:37 2014
New Revision: 1584837

URL: http://svn.apache.org/r1584837
Log:
PDFBOX-2007: optimize fromBGRtoRGB()

Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java?rev=1584837r1=1584836r2=1584837view=diff
==
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java 
(original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/filter/DCTFilter.java 
Fri Apr  4 17:56:37 2014
@@ -194,20 +194,22 @@ final class DCTFilter extends Filter
 {
 WritableRaster writableRaster = 
raster.createCompatibleWritableRaster();
 
-int[] bgr = new int[3];
-int[] rgb = new int[3];
-for (int y = 0, height = raster.getHeight(); y  height; y++)
+int width = raster.getWidth();
+int height = raster.getHeight();
+int w3 = width * 3;
+int[] tab = new int[w3];
+//BEWARE: handling the full image at a time is slower than one line at 
a time
+for (int y = 0; y  height; y++)
 {
-for (int x = 0, width = raster.getWidth(); x  width; x++)
+raster.getPixels(0, y, width, 1, tab);
+for (int off = 0; off  w3; off += 3)
 {
-raster.getPixel(x, y, bgr);
-rgb[0] = bgr[2];
-rgb[1] = bgr[1];
-rgb[2] = bgr[0];
-writableRaster.setPixel(x, y, rgb);
+int tmp = tab[off];
+tab[off] = tab[off + 2];
+tab[off + 2] = tmp;
 }
+writableRaster.setPixels(0, y, width, 1, tab);
 }
-
 return writableRaster;
 }
 




svn commit: r1585098 - /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/action/PDActionURI.java

2014-04-05 Thread tilman
Author: tilman
Date: Sat Apr  5 15:03:31 2014
New Revision: 1585098

URL: http://svn.apache.org/r1585098
Log:
PDFBOX-2002: removed two methods deprecated since 2010 and reformatted

Modified:

pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/action/PDActionURI.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/action/PDActionURI.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/action/PDActionURI.java?rev=1585098r1=1585097r2=1585098view=diff
==
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/action/PDActionURI.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/action/PDActionURI.java
 Sat Apr  5 15:03:31 2014
@@ -39,7 +39,7 @@ public class PDActionURI extends PDActio
 public PDActionURI()
 {
 action = new COSDictionary();
-setSubType( SUB_TYPE );
+setSubType(SUB_TYPE);
 }
 
 /**
@@ -47,9 +47,9 @@ public class PDActionURI extends PDActio
  *
  * @param a The action dictionary.
  */
-public PDActionURI( COSDictionary a )
+public PDActionURI(COSDictionary a)
 {
-super( a );
+super(a);
 }
 
 /**
@@ -57,6 +57,7 @@ public class PDActionURI extends PDActio
  *
  * @return The cos object that matches this Java object.
  */
+@Override
 public COSBase getCOSObject()
 {
 return action;
@@ -67,6 +68,7 @@ public class PDActionURI extends PDActio
  *
  * @return The cos object that matches this Java object.
  */
+@Override
 public COSDictionary getCOSDictionary()
 {
 return action;
@@ -80,7 +82,7 @@ public class PDActionURI extends PDActio
  */
 public String getS()
 {
-   return action.getNameAsString( S );
+return action.getNameAsString(S);
 }
 
 /**
@@ -89,38 +91,41 @@ public class PDActionURI extends PDActio
  *
  * @param s The URI action.
  */
-public void setS( String s )
+public void setS(String s)
 {
-   action.setName( S, s );
+action.setName(S, s);
 }
 
 /**
- * This will get the uniform resource identifier to resolve, encoded in 
7-bit ASCII.
+ * This will get the uniform resource identifier to resolve, encoded in
+ * 7-bit ASCII.
  *
  * @return The URI entry of the specific URI action dictionary.
  */
 public String getURI()
 {
-return action.getString( URI );
+return action.getString(URI);
 }
 
 /**
- * This will set the uniform resource identifier to resolve, encoded in 
7-bit ASCII.
+ * This will set the uniform resource identifier to resolve, encoded in
+ * 7-bit ASCII.
  *
  * @param uri The uniform resource identifier.
  */
-public void setURI( String uri )
+public void setURI(String uri)
 {
-action.setString( URI, uri );
+action.setString(URI, uri);
 }
 
 /**
- * This will specify whether to track the mouse position when the URI is 
resolved.
- * Default value: false.
- * This entry applies only to actions triggered by the user's clicking an 
annotation;
- * it is ignored for actions associated with outline items or with a 
document's OpenAction entry.
+ * This will specify whether to track the mouse position when the URI is
+ * resolved. Default value: false. This entry applies only to actions
+ * triggered by the user's clicking an annotation; it is ignored for 
actions
+ * associated with outline items or with a document's OpenAction entry.
  *
- * @return A flag specifying whether to track the mouse position when the 
URI is resolved.
+ * @return A flag specifying whether to track the mouse position when the
+ * URI is resolved.
  */
 public boolean shouldTrackMousePosition()
 {
@@ -128,46 +133,13 @@ public class PDActionURI extends PDActio
 }
 
 /**
- * This will specify whether to track the mouse position when the URI is 
resolved.
+ * This will specify whether to track the mouse position when the URI is
+ * resolved.
  *
  * @param value The flag value.
  */
-public void setTrackMousePosition( boolean value )
+public void setTrackMousePosition(boolean value)
 {
 this.action.setBoolean(IsMap, value);
 }
-
-// TODO this must go into PDURIDictionary
-/**
- * This will get the base URI to be used in resolving relative URI 
references.
- * URI actions within the document may specify URIs in partial form, to be 
interpreted
- * relative to this base address. If no base URI is specified, such 
partial URIs
- * will be interpreted relative to the location of the document itself.
- * The use of this entry is parallel to that of the body element 
lt

svn commit: r1585111 - in /pdfbox/trunk: examples/pom.xml examples/src/main/java/org/apache/pdfbox/examples/lucene/IndexPDFFiles.java parent/pom.xml pdfbox/pom.xml preflight-app/pom.xml preflight/pom.

2014-04-05 Thread tilman
Author: tilman
Date: Sat Apr  5 15:43:13 2014
New Revision: 1585111

URL: http://svn.apache.org/r1585111
Log:
PDFBOX-1836: update to latest versions

Modified:
pdfbox/trunk/examples/pom.xml

pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/IndexPDFFiles.java
pdfbox/trunk/parent/pom.xml
pdfbox/trunk/pdfbox/pom.xml
pdfbox/trunk/preflight-app/pom.xml
pdfbox/trunk/preflight/pom.xml
pdfbox/trunk/xmpbox/pom.xml

Modified: pdfbox/trunk/examples/pom.xml
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/examples/pom.xml?rev=1585111r1=1585110r2=1585111view=diff
==
--- pdfbox/trunk/examples/pom.xml (original)
+++ pdfbox/trunk/examples/pom.xml Sat Apr  5 15:43:13 2014
@@ -38,7 +38,7 @@
   inceptionYear2002/inceptionYear
 
   properties
-lucene.version4.6.0/lucene.version
+lucene.version4.7.1/lucene.version
   /properties
 
   dependencies
@@ -75,7 +75,7 @@
 dependency
   groupIdorg.apache.wink/groupId
   artifactIdwink-component-test-support/artifactId
-  version1.3.0/version
+  version1.4/version
   scopetest/scope
 /dependency
   /dependencies

Modified: 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/IndexPDFFiles.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/IndexPDFFiles.java?rev=1585111r1=1585110r2=1585111view=diff
==
--- 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/IndexPDFFiles.java
 (original)
+++ 
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/lucene/IndexPDFFiles.java
 Sat Apr  5 15:43:13 2014
@@ -102,8 +102,8 @@ public class IndexPDFFiles
 System.out.println(Indexing to directory ' + indexPath + '...);
 
 Directory dir = FSDirectory.open(new File(indexPath));
-Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
-IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43, 
analyzer);
+Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_46);
+IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_46, 
analyzer);
 
 if (create)
 {

Modified: pdfbox/trunk/parent/pom.xml
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/parent/pom.xml?rev=1585111r1=1585110r2=1585111view=diff
==
--- pdfbox/trunk/parent/pom.xml (original)
+++ pdfbox/trunk/parent/pom.xml Sat Apr  5 15:43:13 2014
@@ -23,7 +23,7 @@
 parent
 groupIdorg.apache/groupId
 artifactIdapache/artifactId
-version13/version
+version14/version
 relativePath /
 /parent
 
@@ -80,7 +80,12 @@
 dependency
 groupIdcom.ibm.icu/groupId
 artifactIdicu4j/artifactId
-version52.1/version
+version53.1/version
+/dependency
+dependency
+groupIdlog4j/groupId
+artifactIdlog4j/artifactId
+version1.2.17/version
 /dependency
   
 !-- For legal reasons (incompatible license), these two 
dependencies 
@@ -95,7 +100,7 @@
 dependency
 groupIdnet.java.dev.jai-imageio/groupId
 artifactIdjai-imageio-core-standalone/artifactId
-version1.2-pre-dr-b04-2011-07-04/version
+version1.2-pre-dr-b04-2013-04-23/version
 scopetest/scope
 /dependency
 /dependencies
@@ -180,7 +185,7 @@
 plugin
 groupIdorg.apache.felix/groupId
 artifactIdmaven-bundle-plugin/artifactId
-version2.3.7/version
+version2.4.0/version
 /plugin
 !--This plugin's configuration is used to store Eclipse m2e 
settings only. It has no influence on the Maven build itself.--
 plugin

Modified: pdfbox/trunk/pdfbox/pom.xml
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/pom.xml?rev=1585111r1=1585110r2=1585111view=diff
==
--- pdfbox/trunk/pdfbox/pom.xml (original)
+++ pdfbox/trunk/pdfbox/pom.xml Sat Apr  5 15:43:13 2014
@@ -105,6 +105,14 @@
 /resources
 plugins
 plugin
+artifactIdmaven-compiler-plugin/artifactId
+configuration
+showDeprecationtrue/showDeprecation
+target1.6/target
+source1.6/source
+/configuration
+/plugin
+plugin
 artifactIdmaven-surefire-plugin/artifactId
 configuration
 argLine-Xmx128m/argLine

svn commit: r1585354 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

2014-04-06 Thread tilman
Author: tilman
Date: Sun Apr  6 22:00:05 2014
New Revision: 1585354

URL: http://svn.apache.org/r1585354
Log:
PDFBOX-1147: Code table in LZW filter must be local to the method because there 
is only one filter instance

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java?rev=1585354r1=1585353r2=1585354view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/filter/LZWFilter.java
 Sun Apr  6 22:00:05 2014
@@ -51,10 +51,8 @@ public class LZWFilter implements Filter
  */
 public static final long EOD = 257;
 
-/**
- * The LZW code table.
- */
-private ArrayListbyte[] codeTable = null;
+//BEWARE: codeTable must be local to each method, because there is only
+// one instance of each filter
 
 /**
  * {@inheritDoc}
@@ -62,7 +60,7 @@ public class LZWFilter implements Filter
 public void decode(InputStream compressedData, OutputStream result, 
COSDictionary options, int filterIndex)
 throws IOException
 {
-codeTable = null;
+ArrayListbyte[] codeTable = null;
 int chunk = 9;
 MemoryCacheImageInputStream in = new 
MemoryCacheImageInputStream(compressedData);
 long nextCommand = 0;
@@ -75,7 +73,7 @@ public class LZWFilter implements Filter
 if (nextCommand == CLEAR_TABLE)
 {
 chunk = 9;
-initCodeTable();
+codeTable = createCodeTable();
 prevCommand = -1;
 }
 else
@@ -124,7 +122,7 @@ public class LZWFilter implements Filter
 public void encode(InputStream rawData, OutputStream result, COSDictionary 
options, int filterIndex)
 throws IOException
 {
-initCodeTable();
+ArrayListbyte[] codeTable = createCodeTable();
 int chunk = 9;
 
 byte[] inputPattern = null;
@@ -164,7 +162,7 @@ public class LZWFilter implements Filter
 // code table is full
 out.writeBits(CLEAR_TABLE, chunk);
 chunk = 9;
-initCodeTable();
+codeTable = createCodeTable();
 }
 
 inputPattern = new byte[]
@@ -195,7 +193,6 @@ public class LZWFilter implements Filter
 out.writeBits(EOD, chunk);
 out.writeBits(0, 7); // pad with 0
 out.flush(); // must do or file will be empty :-(
-codeTable.clear();
 }
 
 /**
@@ -241,9 +238,9 @@ public class LZWFilter implements Filter
  * Init the code table with 1 byte entries and the EOD and CLEAR_TABLE
  * markers.
  */
-private void initCodeTable()
+private ArrayListbyte[] createCodeTable()
 {
-codeTable = new ArrayListbyte[](4096);
+ArrayListbyte[] codeTable = new ArrayListbyte[](4096);
 for (int i = 0; i  256; ++i)
 {
 codeTable.add(new byte[]
@@ -253,6 +250,7 @@ public class LZWFilter implements Filter
 }
 codeTable.add(null); // 256 EOD
 codeTable.add(null); // 257 CLEAR_TABLE
+return codeTable;
 }
 
 /**




svn commit: r1585502 - /pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineWidth.java

2014-04-07 Thread tilman
Author: tilman
Date: Mon Apr  7 15:20:05 2014
New Revision: 1585502

URL: http://svn.apache.org/r1585502
Log:
PDFBOX-2018: set correct stroke default values as per specification

Modified:

pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineWidth.java

Modified: 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineWidth.java
URL: 
http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineWidth.java?rev=1585502r1=1585501r2=1585502view=diff
==
--- 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineWidth.java
 (original)
+++ 
pdfbox/branches/1.8/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineWidth.java
 Mon Apr  7 15:20:05 2014
@@ -40,6 +40,7 @@ public class SetLineWidth extends org.ap
  * @param arguments List
  * @throws IOException If an error occurs while processing the font.
  */
+@Override
 public void process(PDFOperator operator, ListCOSBase arguments) throws 
IOException
 {
 super.process( operator, arguments );
@@ -48,7 +49,7 @@ public class SetLineWidth extends org.ap
 BasicStroke stroke = (BasicStroke)drawer.getStroke();
 if (stroke == null)
 {
-drawer.setStroke( new BasicStroke( lineWidth ) );
+drawer.setStroke( new BasicStroke( lineWidth, 
BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER ) );
 }
 else
 {




  1   2   3   4   5   6   7   8   9   10   >