已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java调用flashpaper实现文档转换为swf1,使用线程挂起使java线程与外部程序进程保持同步2,利用文件大小,调度java线程,提高运行效率3,可以以队列的方式实现连续转换文件 4,转换后的swf可能与某些预览方式不兼容,最后作者贴出了jsp预览代码5,本文贴出了大部分的代码,旨在表达作者实现的思想,可能不能立即调试通过,请自行修改。6,QQ:136677364 非常欢迎和大家交流package com.liuzizhong.convert2swf;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.List;import java.util.Map;import java.util.logging.Logger;import mon.FormatUtil;import mon.ProjectConfig;/* * 文件转换swf格式支持 * * author LiuZizhong * version 2013-12-19 */public class Convert2SwfProcess private Logger logger;private ProcessBuilder proBuilder;private ProjectConfig config = ProjectConfig.getInstance();/* * 构造方法 */public Convert2SwfProcess()super();logger = Logger.getLogger(Convert2SwfProcess.class.getName();/初始化进程生成器initProcessBuilder();/* * 转换文件,参数都是绝对路径 * * param inFile 要转换的文件的绝对路径 * param outFolder 输出文件的绝对路径 * return * throws Convert2SwfException * throws UnSupportExtException */public String convertFile(File inFile, File outFolder) throws Convert2SwfException, UnSupportExtException if(!outFolder.isDirectory()throw new Convert2SwfException(输出文件路径不合法!+outFolder.getAbsolutePath();if(!inFile.isFile()throw new Convert2SwfException(待转换的文件路径不合法!+inFile.getAbsolutePath();/判断文件格式是否能转String arr = inFile.getName().split(.);String ext = arrarr.length-1;if(!FormatUtil.getInstance().isConvertFormat(ext)throw new UnSupportExtException(不支持+ext+类型的文件!+inFile.getAbsolutePath();/过大的文件可下载预览,转换没意义long fileLength = inFile.length();if(fileLength(1024*1204*config.getConvertMaxSize()throw new Convert2SwfException(文件大于+config.getConvertMaxSize()+M!+inFile.getAbsolutePath();/ 设置输出文件名称和路径String tmpOutFile = outFolder.getPath().concat(File.separator).concat(inFile.getName().replaceAll(.1.*$, .swf);/ 如果转换后的文件已经存在,(删除该文件重转,或者是抛出异常),(应该在数据库中控制已经转完的不再转)File outFile1 = new File(tmpOutFile);if(outFile1.exists()/outFile1.delete();throw new Convert2SwfException(swf文件已经存在!+tmpOutFile);/ 拼接要执行的命令(命令路径中有空格,使用list传递)List commandArray = new ArrayList();commandArray.add(config.getConvertCommand();commandArray.add(inFile.getPath();commandArray.add(-o);commandArray.add(tmpOutFile);/根据文件的大小设置等待时间long waitTime = config.getConvertBaseWaitTime()*1000;if(fileLength1024*1024)/小于1M 3秒+每兆1秒waitTime += inFile.length()/1000;else if(fileLength(start+1000*60*config.getConvertBreakTime()throw new Convert2SwfException(转换超时,强行终止!+inFile.getAbsolutePath();try Thread.sleep(100); catch (InterruptedException e) e.printStackTrace();/* * 将命令交给dos命令行处理,并让线程等待waitTime * * param pb ProcessBuilder对象 * param cmd 要执行的命令 * param waitTime 进程等待时间 * throws Convert2SwfException */private int executeCommand(ProcessBuilder pb, List cmd,long waitTime) throws Convert2SwfException int result;try Process pro = mand(cmd).start();result = pro.waitFor();pro.destroy();(正在转换.);Thread.sleep(waitTime);return result; catch (IOException e) throw new Convert2SwfException(执行命令: + cmd + 失败! + e); catch (InterruptedException e) (Process.waitFor被中断! + e);return 500;/* * 初始化ProcessBuilder对象 */private void initProcessBuilder() / 创建ProcessBuilder对象,传入参数proBuilder = new ProcessBuilder();Map envMap = proBuilder.environment();envMap.clear();envMap.putAll(System.getenv();/proBuilder.directory(工作路径);proBuilder.redirectErrorStream(true);package mon;import java.util.ArrayList;import java.util.List;public class FormatUtil private List convertFormats = new ArrayList();private FormatUtil() convertFormats.add(doc);convertFormats.add(docx);convertFormats.add(xls);convertFormats.add(xlsx);convertFormats.add(ppt);convertFormats.add(pdf);convertFormats.add(txt);public boolean isConvertFormat(String extendName) return convertFormats.contains(extendName);public static FormatUtil fu = new FormatUtil();public static FormatUtil getInstance() return fu;package mon;import java.util.ResourceBundle;public class ProjectConfig private int uploadFileMaxSize;private int convertMaxSize = 50;private int convertBaseWaitTime = 3;private int convertBreakTime = 1;private String convertCommand;private ProjectConfig() ResourceBundle bundle = ResourceBundle.getBundle(config);uploadFileMaxSize = Integer.parseInt(0+bundle.getString(UploadFileMaxSize).replace( ,);convertCommand = bundle.getString(ConvertCommand);public int getUploadFileMaxSize()return uploadFileMaxSize;public int getConvertMaxSize()return convertMaxSize;public int getConvertBaseWaitTime()return convertBaseWaitTime;public int getConvertBreakTime()return convertBreakTime;public String getConvertCommand()return convertCommand;private static ProjectConfig config = new ProjectConfig();public static ProjectConfig getInstance() return config;下面是配置文件perties#FlashPaper command pathConvertCommand=C:ProgramFilesMacr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 遂宁市儿童福利院2026年面向社会公开招聘编外人员备考题库及答案详解(必刷)
- 2026四川创锦发展控股集团有限公司招聘项目负责人的1人备考题库附答案详解(研优卷)
- 2026浙江温州外国语高级中学(温州中学国际部)招聘经济教师1人备考题库及一套答案详解
- 2026首都医科大学附属北京妇产医院招聘(第二批)9人备考题库附答案详解(轻巧夺冠)
- 2026浙江台州海关综合技术服务中心招聘编制外工作人员1人备考题库及一套答案详解
- 信息技术支持阶段系统集成方案
- 2026中国电建集团郑州泵业有限公司招聘7人备考题库含答案详解(精练)
- 2026陕西投资集团高校毕业生春季校园招聘备考题库附答案详解(能力提升)
- 2026新疆双河国农食品有限公司招聘1人备考题库附答案详解(夺分金卷)
- 业务连续性管理流程方案
- 课题开题报告:朝鲜半岛历史进程中明移民作用研究-以宝城宣氏家族为中心
- 2024年河南省郑州市高新区小升初数学试卷
- 检验科中级竞聘述职报告
- 取制样安全的重要性
- 2024-2030年撰写:中国滋肾育胎丸行业发展趋势及竞争调研分析报告
- 神经重症患者镇痛镇静中国共识(2023版)
- 天燃气锅炉房应急处理预案范文(2篇)
- 长距离输水管道水压试验规程DB41-T 1973-2020
- 男女出轨调解协议书范文范本
- 厂房出租三方协议书范文模板
- 驾驶员专业知识考试题及答案
评论
0/150
提交评论