Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在PDF中写入CMYK图像_Java_Pdf_Itext_Cmyk - Fatal编程技术网

Java 在PDF中写入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

我需要使用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[] 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”配合使用,现在对我来说没问题了。