使用pdfbox在pdf上显示java CMYK图像
我正在尝试使用pdfbox 1.8在java中创建pdf,但问题是我无法在pdf上显示CMYK图像,所以我尝试使用以下代码解决此问题:
File filePath = new File("C:/Users/msuryawanshi/Documents/10734730431625_C1LA.jpg");
JPEGImageDecoder jpegDecoder = JPEGCodec.createJPEGDecoder(new FileInputStream(filePath));
BufferedImage image = jpegDecoder.decodeAsBufferedImage();
imageUrl = "http://extranet.handgards.com/gs1/10734730431625_C1LA.jpg";
File f = new File("C:/Users/msuryawanshi/Documents/10734730431625_C1LA.jpg");
String url = "http://extranet.handgards.com/gs1/10734730431625_C1LA.jpg";
Iterator readers = ImageIO.getImageReadersByFormatName("JPEG");
ImageReader reader = null;
while (readers.hasNext()) {
reader = (ImageReader) readers.next();
if (reader.canReadRaster()) {
break;
}
}
//Stream the image file (the original CMYK image)
ImageInputStream input = ImageIO.createImageInputStream(f);
reader.setInput(input);
//Read the image raster
Raster raster = reader.readRaster(0, null);
//Create a new RGB image
BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(),
BufferedImage.TYPE_4BYTE_ABGR);
//Fill the new image with the old raster
bi.getRaster().setRect(raster);
PDXObjectImage ximage = new PDPixelMap(document, bi);
contentStream.drawXObject(ximage, margin + 5, texty, 170, 100);
但图像是没有意义的,我附加了输出pdf和原始图像,我想在我的pdf上显示。同样请帮忙
# 1 楼答案
PDFBox根本不支持嵌入CMYK图像,因为java本身无法读取此类图像。通过使用twelvemonkeys library而不是Java ImageIO将JPEG读入BuffereImage,可以将其嵌入为RGB图像。从这里开始,只需使用PDPixelMap(1.8版)或LosslessFactory(2.0版)