有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用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);

enter image description here

但图像是没有意义的,我附加了输出pdf和原始图像,我想在我的pdf上显示。同样请帮忙


共 (1) 个答案

  1. # 1 楼答案

    PDFBox根本不支持嵌入CMYK图像,因为java本身无法读取此类图像。通过使用twelvemonkeys library而不是Java ImageIO将JPEG读入BuffereImage,可以将其嵌入为RGB图像。从这里开始,只需使用PDPixelMap(1.8版)或LosslessFactory(2.0版)