Java itext pdf到图像转换
我的任务是将pdf转换为图像,我能够将基于rgb的彩色模型pdf转换为图像,但无法转换(图像类型设备cmyk) 我使用itext api读取pdf文件,获取页面大小,并使用bufferimage转换图像。我不知道如何查找 请帮我找出解决办法 代码: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
导入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++;
}
}
}