설명서: PDFBoxPDF를 그림으로 변환

2463 단어 pdf전시하다pdfbox
프로젝트는 전방에서 문서를 보여주는 기능을 사용했다.
원래 구현은 서버 쪽: FlashPaper2 + java, 전방 플래시 컨트롤러가 swf 흐름 출력을 수신합니다.그러나 서버가 64비트로 업그레이드된 후 서버 측의 FlashPaper2는 더 이상 어울리지 않는다.
Boss는 문서 전시 기능을 실현하고 고객이 문서를 다운로드하는 것을 통제할 수 있도록 요구한다.
나는 플래시나 다른 플러그인을 사용하지 않아도 필요에 도달할 수 있을지 생각했다. 그러면 클라이언트에게 설치할 플러그인 같은 요구가 없을 것이다.
앞쪽에서 처리하지 않으면 뒷쪽에서 처리할 수밖에 없다!
대체로 다음과 같은 생각이다.
        1.일반 텍스트 문서를 앞쪽으로 직접 출력
    
        2.PDF PPT 이미지 등을 이미지로 변환하여 전면 표시
        3.DOC 형식의 문서를 그림으로 변환할 수 있는지, 안 되면 PDF로 변환하고 그림을 돌려줍니다.
        4.성능 문제 등 기능 개선
이 기능의 난점은 문서에서 그림을 돌려서 미리 연구하는 것이다.
PDF 그림 변환은 아파치의 PDFBox 구성 요소 1.8.3 버전을 사용합니다.
기능 데모 코드:

package com.zas.pdf.demo;

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

import javax.imageio.ImageIO;

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

/**
 * @author zas
 * PDF        
 */
public class PDFConvertToImage {
	
	static String filePath = "D:\\pdf\\java     .pdf";
	static String outputFilePath = "D:\\pdf\\java\\";

	/**
	 *     PDF       
	 * @param inputFile    PDF  
	 * @param outputFolder       
	 * @throws IOException
	 */
	public static void change(File inputFile, File outputFolder) throws IOException {
		//TODO                 PDF
		//TODO   PDF      
		PDDocument doc = null;
		try {
			doc = PDDocument.load(inputFile);
			List<PDPage> allPages = doc.getDocumentCatalog().getAllPages();
			for (int i = 0; i < allPages.size(); i++) {
				PDPage page = allPages.get(i);
				page.convertToImage();
				BufferedImage image = page.convertToImage();
				ImageIO.write(image, "jpg", new File(outputFolder.getAbsolutePath() + File.separator + (i + 1) + ".jpg"));
			}
		} finally {
			if (doc != null) {
				doc.close();
			}
		}
	}
	
	public static void main(String[] args) {
		File inputFile = new File(PDFConvertToImage.filePath);
		File outputFolder = new File(PDFConvertToImage.outputFilePath);
		if(!outputFolder.exists()){
			outputFolder.mkdirs();
		}
		try {
			PDFConvertToImage.change(inputFile, outputFolder);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


질문:
PDF 문서가 180M 크기인 경우 즉시 예외 처리
PDF 페이지 수가 500페이지 이상일 경우 처리 속도가 매우 느립니다.
후기에 이 두 문제를 처리하고 있다
이미... 이 있다
0명 메모 발표, 강타 ->>
여기<<- 토론 참여
ITEye 추천
4
  • - 소프트웨어 인재는 언어 저담보로 미국에 가서 유급 대학원에 진학한다!-
  • 좋은 웹페이지 즐겨찾기