2012-06-11 4 views
1

Je dois ajouter une image CMJN (java.awt.BufferedImage) à un document PDF avec iText.Écrire une image CMJN au format PDF

Je suis en train de le faire avec:

com.lowagie.text.Image img = Image.getInstance(BufferedImage, bgColor); 

Cela produit une image RVB dans le PDF résultant. (et je suppose que c'est un bug, car il ignore juste ColorModel). Cependant, je pourrais utiliser:

com.lowagie.text.Image img = Image.getInstance(byte[] rawData); 

Et il produit une image CMJN correcte au format PDF. Mais pour le second cas, je dois convertir java.awt.BufferedImage en ByteArray. Je ne peux pas le faire avec ImageIO.write(ByteArrayOutputStream). Je ne peux pas le faire avec com.sun.image.codec.jpeg.JPEGImageEncoder parce que je dois utiliser OpenJDK.

Des idées comment puis-je obtenir le comportement correct pour écrire une image CMJN en PDF en utilisant iText?

Répondre

2

Donc, fondamentalement ce que vous demandez est de savoir comment convertir un BufferedImage en un byte[] pour imprimer au format PDF?

BufferedImage img; // your image to be printed 
String formatName; // name of the image format (see ImageIO docs) 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ImageIO.write(img, formatName, baos); 
byte[] rawData = baos.toByteArray(); 

Vous devriez pouvoir l'utiliser pour l'CMJN image que vous aviez dans votre message original:

com.lowagie.text.Image img = Image.getInstance(byte[] rawData); 
+0

Comme je l'ai écrit - je dois utiliser OpenJDK, non JVM du Soleil. Et il n'y a pas de codec JPEG dans OpenJDK. Mais cette solution fonctionne avec "TIFF", c'est OK pour moi maintenant. – AvrDragon