我需要将CMYK图像(java.awt.BufferedImage
)添加到带有iText的Pdf文档中。
我正试着这样做:
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图像的正确行为?
答案 0 :(得分: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);