文档展示:PDFBox 将PDF转换为图片
- - ITeye博客 项目用到了前端展示文档的功能. 原有实现为服务器端:FlashPaper2 + java,前端flash控件接收swf流输出. 但是当服务器升级为64位以后,服务器端的FlashPaper2再也配不起来了. Boss要求实现文档展示功能,并且要求能够控制客户下载文档. 我想了下能不能不用flash或别的插件来达到要需求,这样就对客户端没啥必装的插件之类的要求了.
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(); } } }