Apache PDFBox将pdf转换为图像

Apache PDFBox将pdf转换为图像

有人可以举例说明如何使用Apache PDFBox在不同的图像中转换pdf(pdf的每一页都有一个)。提前致谢



哆啦的时光机
浏览 1342回答 3
3回答

牛魔王的故事

1.8。*版本的解决方案:PDDocument&nbsp;document&nbsp;=&nbsp;PDDocument.loadNonSeq(new&nbsp;File(pdfFilename),&nbsp;null);List<PDPage>&nbsp;pdPages&nbsp;=&nbsp;document.getDocumentCatalog().getAllPages();int&nbsp;page&nbsp;=&nbsp;0;for&nbsp;(PDPage&nbsp;pdPage&nbsp;:&nbsp;pdPages){&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;++page; &nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bim&nbsp;=&nbsp;pdPage.convertToImage(BufferedImage.TYPE_INT_RGB,&nbsp;300); &nbsp;&nbsp;&nbsp;&nbsp;ImageIOUtil.writeImage(bim,&nbsp;pdfFilename&nbsp;+&nbsp;"-"&nbsp;+&nbsp;page&nbsp;+&nbsp;".png",&nbsp;300);}document.close();在构建之前,不要忘记阅读1.8依赖项页面。2.0版本的解决方案:PDDocument&nbsp;document&nbsp;=&nbsp;PDDocument.load(new&nbsp;File(pdfFilename));PDFRenderer&nbsp;pdfRenderer&nbsp;=&nbsp;new&nbsp;PDFRenderer(document);for&nbsp;(int&nbsp;page&nbsp;=&nbsp;0;&nbsp;page&nbsp;<&nbsp;document.getNumberOfPages();&nbsp;++page){&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;bim&nbsp;=&nbsp;pdfRenderer.renderImageWithDPI(page,&nbsp;300,&nbsp;ImageType.RGB); &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;suffix&nbsp;in&nbsp;filename&nbsp;will&nbsp;be&nbsp;used&nbsp;as&nbsp;the&nbsp;file&nbsp;format &nbsp;&nbsp;&nbsp;&nbsp;ImageIOUtil.writeImage(bim,&nbsp;pdfFilename&nbsp;+&nbsp;"-"&nbsp;+&nbsp;(page+1)&nbsp;+&nbsp;".png",&nbsp;300);}document.close();ImageIOUtil类位于单独的下载/工件(pdf-tools)中。在进行构建之前,请阅读2.0依赖关系页面,您将需要额外的带有jbig2图像的PDF文件,用于保存到tiff图像以及读取加密文件。确保使用您正在使用的任何JDK版本的最新版本,即如果您使用的是jdk8,则不要使用版本1.8.0_5,请使用1.8.0_191或您阅读时的最新版本。早期版本非常慢。

胡子哥哥

public&nbsp;class&nbsp;PDFtoJPGConverter&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;List<File>&nbsp;convertPdfToImage(File&nbsp;file,&nbsp;String&nbsp;destination)&nbsp;throws&nbsp;Exception&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;destinationFile&nbsp;=&nbsp;new&nbsp;File(destination); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!destinationFile.exists())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destinationFile.mkdir(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("DESTINATION&nbsp;FOLDER&nbsp;CREATED&nbsp;->&nbsp;"&nbsp;+&nbsp;destinationFile.getAbsolutePath()); &nbsp;&nbsp;&nbsp;&nbsp;}else&nbsp;if(destinationFile.exists()){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("DESTINATION&nbsp;FOLDER&nbsp;ALLREADY&nbsp;CREATED!!!"); &nbsp;&nbsp;&nbsp;&nbsp;}else{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("DESTINATION&nbsp;FOLDER&nbsp;NOT&nbsp;CREATED!!!"); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(file.exists())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDDocument&nbsp;doc&nbsp;=&nbsp;PDDocument.load(file); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDFRenderer&nbsp;renderer&nbsp;=&nbsp;new&nbsp;PDFRenderer(doc); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<File>&nbsp;fileList&nbsp;=&nbsp;new&nbsp;ArrayList<File>(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;fileName&nbsp;=&nbsp;file.getName().replace(".pdf",&nbsp;""); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("CONVERTER&nbsp;START....."); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;doc.getNumberOfPages();&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;default&nbsp;image&nbsp;files&nbsp;path:&nbsp;original&nbsp;file&nbsp;path &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;if&nbsp;necessary,&nbsp;file.getParent()&nbsp;+&nbsp;"/"&nbsp;=>&nbsp;another&nbsp;path &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;fileTemp&nbsp;=&nbsp;new&nbsp;File(destination&nbsp;+&nbsp;fileName&nbsp;+&nbsp;"_"&nbsp;+&nbsp;i&nbsp;+&nbsp;".jpg");&nbsp;//&nbsp;jpg&nbsp;or&nbsp;png &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedImage&nbsp;image&nbsp;=&nbsp;renderer.renderImageWithDPI(i,&nbsp;200); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;200&nbsp;is&nbsp;sample&nbsp;dots&nbsp;per&nbsp;inch. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;if&nbsp;necessary,&nbsp;change&nbsp;200&nbsp;into&nbsp;another&nbsp;integer. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ImageIO.write(image,&nbsp;"JPEG",&nbsp;fileTemp);&nbsp;//&nbsp;JPEG&nbsp;or&nbsp;PNG &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileList.add(fileTemp); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;doc.close(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("CONVERTER&nbsp;STOPTED....."); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("IMAGE&nbsp;SAVED&nbsp;AT&nbsp;->&nbsp;"&nbsp;+&nbsp;destinationFile.getAbsolutePath()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;fileList; &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(file.getName()&nbsp;+&nbsp;"&nbsp;FILE&nbsp;DOES&nbsp;NOT&nbsp;EXIST"); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;try&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PDFtoJPGConverter&nbsp;converter&nbsp;=&nbsp;new&nbsp;PDFtoJPGConverter(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scanner&nbsp;sc&nbsp;=&nbsp;new&nbsp;Scanner(System.in); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("Enter&nbsp;your&nbsp;destination&nbsp;folder&nbsp;where&nbsp;save&nbsp;image&nbsp;\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Destination&nbsp;=&nbsp;D:/PPL/; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;destination&nbsp;=&nbsp;sc.nextLine(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("Enter&nbsp;your&nbsp;selected&nbsp;pdf&nbsp;files&nbsp;name&nbsp;with&nbsp;source&nbsp;folder&nbsp;\n"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;sourcePathWithFileName&nbsp;=&nbsp;sc.nextLine(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Source&nbsp;Path&nbsp;=&nbsp;D:/PDF/ant.pdf,D:/PDF/abc.pdf,D:/PDF/xyz.pdf &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(sourcePathWithFileName&nbsp;!=&nbsp;null&nbsp;||&nbsp;sourcePathWithFileName&nbsp;!=&nbsp;"")&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;files&nbsp;=&nbsp;sourcePathWithFileName.split(","); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(String&nbsp;file&nbsp;:&nbsp;files)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;pdf&nbsp;=&nbsp;new&nbsp;File(file); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print("FILE:>>&nbsp;"+&nbsp;pdf); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;converter.convertPdfToImage(pdf,&nbsp;destination); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;catch&nbsp;(Exception&nbsp;ex)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace(); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}}====================================在这里,我使用Apache pdfbox-2.0.8,commons-logging-1.2和fontbox-2.0.8 Library快乐编码:)
打开App,查看更多内容
随时随地看视频慕课网APP