Java itext pdf到图像转换

Java itext pdf到图像转换,java,image,pdf,itext,Java,Image,Pdf,Itext,我的任务是将pdf转换为图像,我能够将基于rgb的彩色模型pdf转换为图像,但无法转换(图像类型设备cmyk) 我使用itext api读取pdf文件,获取页面大小,并使用bufferimage转换图像。我不知道如何查找 请帮我找出解决办法 代码: 导入java.awt.Graphics; 导入java.awt.Graphics2D; 导入java.awt.GraphicsConfiguration; 导入java.awt.GraphicsDevice; 导入java.awt.GraphicsE

我的任务是将pdf转换为图像,我能够将基于rgb的彩色模型pdf转换为图像,但无法转换(图像类型设备cmyk) 我使用itext api读取pdf文件,获取页面大小,并使用bufferimage转换图像。我不知道如何查找 请帮我找出解决办法

代码:

导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.GraphicsConfiguration;
导入java.awt.GraphicsDevice;
导入java.awt.GraphicsEnvironment;
导入java.awt.HeadlessException;
导入java.awt.Image;
导入java.awt.Rectangle;
导入java.awt.Transparency;
导入java.awt.image.buffereImage;
导入java.awt.image.ColorConvertOp;
导入java.awt.image.ColorModel;
导入java.awt.image.PixelGrabber;
导入java.awt.image.graster;
导入java.awt.image.WritableRaster;
导入java.io.File;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.RandomAccessFile;
导入java.nio.ByteBuffer;
导入java.nio.channels.FileChannel;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.Properties;
导入java.awt.Toolkit;
导入javax.imageio.imageio;
导入javax.swing.ImageIcon;
导入org.apache.pdfbox.PDFReader;
导入org.apache.pdfbox.pdmodel.PDDocument;
导入com.google.gson.gson;
导入com.itextpdf.text.BaseColor;
导入com.itextpdf.text.pdf.pdfpatternPainer;
导入com.itextpdf.text.pdf.PdfReader;
导入com.sun.pdfview.PDFFile;
导入com.sun.pdfview.PDFPage;
导入java.awt.color.ColorSpace;
导入java.awt.font.GlyphVector;
导入sun.awt.sunfits;
导入sun.java2d.SunGraphics2D;
导入sun.font.GlyphList;
导入org.apache.pdfbox.pdmodel.PDDocument;
导入org.apache.pdfbox.pdmodel.PDPage;
公共类PDFTOMultimage{
公共静态void main(字符串args[])引发IOException{
System.out.println(“heeeeeee:;
//私有字符串sourceDir;
File sourceFile=新文件(“/home/PDF_Clipping/tp_cmyk.PDF”);
//私有字符串destinationDir;
File destinationFile=新文件(“/home/testImage/page_0003”);
字符串文件名=sourceFile.getName().replace(“.pdf”,”);
RandomAccessFile raf=新的RandomAccessFile(源文件,“r”);
FileChannel=raf.getChannel();
ByteBuffer buf=channel.map(FileChannel.MapMode.READ_ONLY,0,
channel.size());
Pdfile pdf=新的Pdfile(buf);
System.out.println(“总页数:+pdf.getNumPages());
int pageNumber=1;
对于(int i=0;i
如果使用imagemagick,我会使用配置文件将cmyk转换为rgb,反之亦然。在终端och中运行Imagemagick使用java进程发送从outputstream读取的命令。我尝试了Imagemagick,但它对我无效。我无法执行进一步的进程这里是t链接
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.ColorModel;
import java.awt.image.PixelGrabber;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Properties;
import java.awt.Toolkit;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

import org.apache.pdfbox.PDFReader;
import org.apache.pdfbox.pdmodel.PDDocument;

import com.google.gson.Gson;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.pdf.PdfPatternPainter;
import com.itextpdf.text.pdf.PdfReader;
import com.sun.pdfview.PDFFile;
import com.sun.pdfview.PDFPage;

import java.awt.color.ColorSpace;
import java.awt.font.GlyphVector;

import sun.awt.SunHints;
import sun.java2d.SunGraphics2D;
import sun.font.GlyphList;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;

public class PdfToMultiImage {


    public static void main(String args[]) throws IOException {

        System.out.println("HEEEEEEEEE::::::::::::");
        // private String sourceDir;
        File sourceFile = new File("/home/PDF_Clipping/tp_cmyk.pdf");
        // private String destinationDir;
        File destinationFile = new File("/home/testImage/page_0003");
        String fileName = sourceFile.getName().replace(".pdf", "");

        RandomAccessFile raf = new RandomAccessFile(sourceFile, "r");
        FileChannel channel = raf.getChannel();
        ByteBuffer buf = channel.map(FileChannel.MapMode.READ_ONLY, 0,
                channel.size());
        PDFFile pdf = new PDFFile(buf);

        System.out.println("Total Pages: " + pdf.getNumPages());
        int pageNumber = 1;
        for (int i = 0; i < pdf.getNumPages(); i++) {
              PDFPage page = pdf.getPage(i+1);

            // image dimensions
            int width = 1200;
            int height = 1400;
            // create the image

            Rectangle rect = new Rectangle(0, 0, (int) page.getBBox()
                    .getWidth(), (int) page.getBBox().getHeight());

            BufferedImage bufferedImage = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);


            Image image = page.getImage(width, height, rect, null, true, true);

            ColorSpace colorSpace ;
        int a=  bufferedImage.getType();
        System.out.println(a);


            Graphics2D bufImageGraphics = bufferedImage.createGraphics();
            bufImageGraphics.drawImage(image, 0, 0, null);

            File imageFile = new File(destinationFile + "pdfImg" + i + ".png");

            ImageIO.write(bufferedImage, "png", imageFile);
            pageNumber++;
        }
    }



}