You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/04/16 18:51:45 UTC
svn commit: r1587975 - in
/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel:
AddImageToPDF.java ImageToPDF.java
Author: tilman
Date: Wed Apr 16 16:51:45 2014
New Revision: 1587975
URL: http://svn.apache.org/r1587975
Log:
PDFBOX-1990: improve example(s) to allow lossless images, and scaling
Modified:
pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddImageToPDF.java
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/AddImageToPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddImageToPDF.java?rev=1587975&r1=1587974&r2=1587975&view=diff
==============================================================================
--- pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddImageToPDF.java (original)
+++ pdfbox/trunk/examples/src/main/java/org/apache/pdfbox/examples/pdmodel/AddImageToPDF.java Wed Apr 16 16:51:45 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;
@@ -29,6 +31,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.LosslessFactory;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
/**
@@ -71,15 +74,23 @@ public class AddImageToPDF
{
ximage = 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));
+ ximage = LosslessFactory.createFromImage(doc, bim);
+ }
else
{
- //BufferedImage awtImage = ImageIO.read( new File( image ) );
- //ximage = new PDPixelMap(doc, awtImage);
- throw new IOException( "Image type not supported:" + image );
+ throw new IOException( "Image type not supported: " + image );
}
PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true);
- contentStream.drawImage( ximage, 20, 20 );
+ //contentStream.drawImage(ximage, 20, 20 );
+ // better method inspired by http://stackoverflow.com/a/22318681/535646
+ float scale = 1f; // reduce this value if the image is too large
+ contentStream.drawXObject(ximage, 20, 20, ximage.getWidth()*scale, ximage.getHeight()*scale);
contentStream.close();
doc.save( outputFile );
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=1587975&r1=1587974&r2=1587975&view=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 Wed Apr 16 16:51:45 2014
@@ -82,13 +82,14 @@ public class ImageToPDF
}
else
{
- //BufferedImage awtImage = ImageIO.read( new File( image ) );
- //ximage = new PDPixelMap(doc, awtImage);
- throw new IOException( "Image type not supported:" + image );
+ throw new IOException( "Image type not supported: " + image );
}
PDPageContentStream contentStream = new PDPageContentStream(doc, page);
- contentStream.drawImage( pdImage, 20, 20 );
+ //contentStream.drawImage(pdImage, 20, 20 );
+ // better method inspired by http://stackoverflow.com/a/22318681/535646
+ float scale = 1f; // reduce this value if the image is too large
+ contentStream.drawXObject(pdImage, 20, 20, pdImage.getWidth()*scale, pdImage.getHeight()*scale);
contentStream.close();
doc.save( file );