项目用到了前端展示文档的功能。
原有实现为服务器端:FlashPaper2 + java,前端flash控件接收swf流输出。但是当服务器升级为64位以后,服务器端的FlashPaper2再也配不起来了。
Boss要求实现文档展示功能,并且要求能够控制客户下载文档。
我想了下能不能不用flash或别的插件来达到要需求,这样就对客户端没啥必装的插件之类的要求了。
前端不做处理,就只有在后端做处理了!
大体想法为:
1.对于普通文本文档直接输出到前端
2.对于PDF PPT 图片等转换为图片展示到前端
3.对于DOC类型的文档看能不能转换为图片,不行的话就先转换为PDF再转图片
4.对于性能问题等功能实现了再调优
该功能的难点在文档转图片,再此做出预研。
PDF转图片使用了apache的PDFBox组件1.8.3版本
功能演示代码:
问题:
当PDF文档为180M大小时直接报解析异常
当PDF页数为500多页时处理非常慢
后期在处理这两个问题
已有 0人发表留言,猛击->> 这里<<-参与讨论
ITeye推荐
原有实现为服务器端:FlashPaper2 + java,前端flash控件接收swf流输出。但是当服务器升级为64位以后,服务器端的FlashPaper2再也配不起来了。
Boss要求实现文档展示功能,并且要求能够控制客户下载文档。
我想了下能不能不用flash或别的插件来达到要需求,这样就对客户端没啥必装的插件之类的要求了。
前端不做处理,就只有在后端做处理了!
大体想法为:
1.对于普通文本文档直接输出到前端
2.对于PDF PPT 图片等转换为图片展示到前端
3.对于DOC类型的文档看能不能转换为图片,不行的话就先转换为PDF再转图片
4.对于性能问题等功能实现了再调优
该功能的难点在文档转图片,再此做出预研。
PDF转图片使用了apache的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推荐