이 기사의 예는 참조를 위해 PDF 이미지를 변환하는 Java의 특정 코드를 공유합니다. 특정 내용은 다음과 같습니다
먼저 Apache를 사용하는 PDFbox 구성 요소 1.8.4
패키지 PDF; java.awt.image.bufferedimage import; import java.io.file; import java.io.ioexception; import java.util.date; Java.util.list 가져 오기; import javax.imageio.imageio; import org.apache.pdfbox.pdmodel.pddocument; import org.apache.pdfbox.pdmodel.pdpage; 공개 클래스 pdfbox {@suppresswarnings ( "rawtypes") public static void main (String [] args)은 ioexception {string p = system.getProperty ( "user.dir") + "/"+"zk.pdf"; pddocument doc = pddocument.load (p); int pagecount = doc.getNumberOfPages (); System.out.println (pagecount); 날짜 시작 = 새 날짜 (); {list pages = doc.getDocumentCatalog (). getAllPages (); for (int i = 0; i <pages.size (); i ++) {pdpage page = (pdpage) pages.get (i); @SuppressWarnings ( "Unused") int width = new float (page.gettrimbox (). getWidth ()). intValue (); @SuppressWarnings ( "Unused") int height = new float (page.gettrimbox (). getheight ()). intvalue (); BufferedImage image = page.converttoimage (); imageio.write (image, "jpg", 새 파일 ( "img" + file.separator + (i + 1) + ".jpg")); System.out.println ( "페이지의 이미지 ->"+(i+1)); }} catch (예외 e) {e.printstacktrace (); } 마침내 {if (doc! = null) {doc.close (); }} 날짜 종료 = 새 날짜 (); system.out.println (end.gettime ()-start.gettime ()); System.out.println ( "Over"); }}그러나 문제는 문제에 있습니다.
PDF 문서가 180m 인 경우 구문 분석 예외를 직접보고합니다.
PDF 페이지 수가 500 페이지를 넘으면 처리가 매우 느립니다.
나중에 PDF-Renderer 버전 1.0.5를 사용해 보았습니다
패키지 PDF; import java.awt.image; import java.awt.rectangle; java.awt.image.bufferedimage import; import java.io.file; import java.io.fileoutputStream; import java.io.ioexception; import java.io.randomaccessfile; java.nio.mappedBytebuffer import; import java.nio.channels.filechannel; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegencodeparam; import com.sun.image.codec.jpeg.jpegimageencoder; import com.sun.pdfview.pdffile; import com.sun.pdfview.pdfpage; public class pdfrenderer {public static void main (string [] args)은 ioexception {String pdfrealepath = system.getProperty ( "user.dir") + "/" /"+.pdf"; 파일 = 새 파일 (pdfrealepath); randomaccessfile raf = 새로운 randomaccessfile (파일, "r"); filechannel 채널 = raf.getChannel (); mappedByteBuffer buf = channel.map (filechannel.mapmode.read_only, 0, channel.size ()); pdffile pdffile = 새로운 pdffile (buf); for (int i = 1; i <= pdffile.getnumpages (); i ++) {pdfpage page = pdffile.getPage (i); 사각형 rect = new Rectangle (0, 0, ((int) page.getBbox () .getWidth ()), ((int) page.getBbox (). getheight ())); image img = page.getimage (rect.width, rect.height, rect, null, true, true); bufferedImage tag = new bufferedImage (rect.width, rect.height, bufferedImage.type_int_rgb); tag.getGraphics (). DrawImage (img, 0, 0, rect.width, rect.height, null); fileoutputStream out = 새 FileOutputStream ( "img" + file.separator + (i + 1) + ".jpg"); // 파일 스트림으로 출력 jpegimageEncoder encoder = jpegcodec.createjpegencoder (out); jpegencodeparam param2 = encoder.getDefaultJpegencodeparam (tag); param2.setquality (1f, false); // 1f는 생성 된 이미지 품질 인코더를 개선하는 것입니다. SetjPegencodeparam (param2); encoder.encode (tag); // jpeg encoding.close (); System.out.println ( "페이지의 이미지 ->"+(i+1)); }}}그러나 문제는 문제에 있습니다. PDF 버전이 1.4가 아닌 경우 오류가 직접보고됩니다.
PDFBox와 비교할 때 변환은 훨씬 덜 효율적입니다. 약 200 페이지의 PDF는 후자에 걸리는 시간의 약 6 배가 걸립니다. 동시에 중국 글꼴을 지원하는 데 몇 가지 문제가 있습니다.
그러나 PDF 버전을 변환 할 수 없다는 데는 아무런 문제가 없습니다.
PDFrenderer는 1.4 이상의 버전을 변환 할 수 없습니다. 해결책을 찾았지만 발견되지 않았습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.