pdfbox將pdf文件轉圖片報錯JPEG2000 image的問題

六月 28, 2017 11:01:56 下午 org.apache.pdfbox.contentstream.PDFStreamEngine operatorException
嚴重: Cannot read JPEG2000 image: Java Advanced Imaging (JAI) Image I/O Tools are not installedjava

 

原由:pdf文件中可能包含的掃描件是JPEG2000格式的圖片,這樣pdfbox在轉換的過程當中須要JAI的支持。git

解決:github

<dependency>
	<groupId>com.github.jai-imageio</groupId>
	<artifactId>jai-imageio-core</artifactId>
	<version>1.3.1</version>
</dependency>
<dependency>
	<groupId>com.github.jai-imageio</groupId>
	<artifactId>jai-imageio-jpeg2000</artifactId>
	<version>1.3.0</version>
</dependency>

測試代碼:apache

package com.demo.pdfreader;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;

/**
 * pdfbox 實現
 * 
 * @author Administrator
 * 
 */
public class PdfBoxApp {
	private static File file = new File("Eclipse插件開發(原書第3版).pdf");

	public static void main(String[] args) {
		PDDocument doc = null;
		try {
			doc = PDDocument.load(file);
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (doc == null)
			return;
		PDFRenderer renderer = new PDFRenderer(doc);
		int pageCount = doc.getNumberOfPages();// 總頁數
		for (int i = 0; i < pageCount; i++) {
			// 按頁讀取
			BufferedImage image = null;
			try {
				image = renderer.renderImage(i, 2.5f);
			} catch (IOException e) {
				System.out.println(i + " parse error");
			}
			if (image == null)
				continue;
			try {
				// 保存轉換後的圖片
				ImageIO.write(image, "PNG", new File("images/" + (i + 1)
						+ ".png"));
			} catch (IOException e) {
			}
		}
	}

}
<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox</artifactId>
			<version>2.0.3</version>
		</dependency>
相關文章
相關標籤/搜索