Java 在PDF中写入CMYK图像
我需要使用iText将CMYK图像(Java 在PDF中写入CMYK图像,java,pdf,itext,cmyk,Java,Pdf,Itext,Cmyk,我需要使用iText将CMYK图像(java.awt.buffereImage)添加到Pdf文档中 我正试图通过以下方式实现: com.lowagie.text.Image img = Image.getInstance(BufferedImage, bgColor); 这将在生成的PDF中生成RGB图像。(我认为这是一个bug,因为它忽略了ColorModel)。但是,我可以使用: com.lowagie.text.Image img = Image.getInstance(byte[] r
java.awt.buffereImage
)添加到Pdf文档中
我正试图通过以下方式实现:
com.lowagie.text.Image img = Image.getInstance(BufferedImage, bgColor);
这将在生成的PDF中生成RGB图像。(我认为这是一个bug,因为它忽略了ColorModel
)。但是,我可以使用:
com.lowagie.text.Image img = Image.getInstance(byte[] rawData);
并生成PDF格式的正确CMYK图像。但是对于第二种情况,我需要在ByteArray
中转换java.awt.buffereImage
。我无法使用ImageIO.write(ByteArrayOutputStream)
完成此操作。我也不能使用com.sun.image.codec.jpeg.JPEGImageEncoder
,因为我必须使用OpenJDK
你知道我如何使用iText在PDF中编写CMYK图像的正确行为吗?因此,基本上你要问的是如何将
缓冲图像
转换成字节[]
打印成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);
正如我所写的,我必须使用OpenJDK,而不是Sun JVM。OpenJDK中没有JPEG编解码器。但这个解决方案与“TIFF”配合使用,现在对我来说没问题了。