2012-06-11 55 views
1

我需要將CMYK圖像(java.awt.BufferedImage)添加到帶有iText的PDF文檔。在PDF中書寫CMYK圖像

我試圖做到這一點的:

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

這將產生在生成的PDF RGB圖像。 (我想這是一個錯誤,因爲它只是忽略ColorModel)。但是我可以使用:

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

它在PDF中生成正確的CMYK-Image。但對於第二種情況,我需要將java.awt.BufferedImage轉換爲ByteArray。我不能這樣做ImageIO.write(ByteArrayOutputStream)。我也無法使用com.sun.image.codec.jpeg.JPEGImageEncoder,因爲我必須使用OpenJDK

任何想法如何才能實現正確的行爲,使用iText在PDF中編寫CMYK圖像?

回答

2

所以基本上你問的是如何將BufferedImage轉換爲byte[]打印到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(); 

您應該能夠使用的CMYK圖像,正如你在原來的職位有:

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

我寫 - 我必須使用的OpenJDK,不是Sun JVM。 OpenJDK中沒有JPEG編解碼器。但是這個解決方案適用於「TIFF」,這對我來說現在可以。 – AvrDragon