当前位置: 首页 > 工具软件 > office to swf > 使用案例 >

java的office转化为pdf,pdf转化为swf的工具类 在线预览之总结

谭兴学
2023-12-01

使用javaweb实现在线预览的工具类:

功能:office转化为pdf,pdf转化为swf

package cn;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
/**
 * office转化为pdf
 * pdf转化为swf文件
 * @author Administrator
 *
 */
public class Converter {  
	private static String pdftoswf = "E:\\安装软件\\swftools\\pdf2swf.exe";  //swftools软件的安装路径
	private static String openOfficePath = "E:\\安装软件\\openoffice\\date";  //openoffice软件的安装路径

	/** 
	 * 将pdf转化为swf文件
	 * 使用步骤:
	 * 1.下载swftools-0.9.exe软件并安装
	 *   直接即可调用方法
	 * @param sourcePath  pdf原路径
	 * @param destPath    目的路径
	 * @param fileName    生成swf的文件名 
	 */
    public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws Exception {  
        //目标路径不存在则建立目标路径  
        File dest = new File(destPath);  
        if (!dest.exists()) dest.mkdirs();  
          
        //源文件不存在则返回  
        File source = new File(sourcePath);  
        if (!source.exists()) return 0;  
          
        //调用pdf2swf命令进行转换  
        String command = pdftoswf + " -o \"" + destPath + "\\" + fileName + "\"  -s flashversion=9 \"" + sourcePath + "\"";  
          
        Process pro = Runtime.getRuntime().exec(command);  
          
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream()));  
        while (bufferedReader.readLine() != null);   
          
        try {  
            pro.waitFor();  
        } catch (InterruptedException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
          
        return pro.exitValue();  
          
    }  
    
    /** 
     * 将Office文档转换为PDF. 运行该函数需要用到OpenOffice和jodconverter-2.2.2
     * 使用步骤:
     * 1.下载OpenOffice软件和jodconverter-2.2.2
     * 2.安装OpenOffice软件
     * 3.将jodconverter-2.2.2压缩包解压,将lib目录下的包全部加入路径
     *   即可直接调用方法
     *   
     * <pre> 
     * 方法示例: 
     * String sourcePath = "F:\\office\\source.doc"; 
     * String destFile = "F:\\pdf\\dest.pdf"; 
     * Converter.office2PDF(sourcePath, destFile); 
     * </pre> 
     *  
     * @param sourceFile 
     *            源文件, 绝对路径. 可以是Office2003-2007全部格式的文档, Office2010的没测试. 包括.doc, 
     *            .docx, .xls, .xlsx, .ppt, .pptx等. 示例: F:\\office\\source.doc 
     * @param destFile 
     *            目标文件. 绝对路径. 示例: F:\\pdf\\dest.pdf 
     * @return 操作成功与否的提示信息. 如果返回 -1, 表示找不到源文件, 或url.properties配置错误; 如果返回 0, 
     *         则表示操作成功; 返回1, 则表示转换失败 
     */  
    public static int office2PDF(String sourceFile, String destFile) {  
        try {  
            File inputFile = new File(sourceFile);  
            if (!inputFile.exists()) {  
                return -1;// 找不到源文件, 则返回-1  
            }  
  
            // 如果目标路径不存在, 则新建该路径  
            File outputFile = new File(destFile);  
            if (!outputFile.getParentFile().exists()) {  
                outputFile.getParentFile().mkdirs();  
            }  
  
            String OpenOffice_HOME = openOfficePath;//这里是OpenOffice的安装目录  
            // 如果从文件中读取的URL地址最后一个字符不是 '\',则添加'\'  
            if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') {  
                OpenOffice_HOME += "\\";  
            }  
            // 启动OpenOffice的服务  
            String command = OpenOffice_HOME  
                    + "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";  
            Process pro = Runtime.getRuntime().exec(command);  
            // connect to an OpenOffice.org instance running on port 8100  
            OpenOfficeConnection connection = new SocketOpenOfficeConnection(  
                    "127.0.0.1", 8100);  
            connection.connect();  
  
            // convert  
            DocumentConverter converter = new OpenOfficeDocumentConverter(  
                    connection);  
            converter.convert(inputFile, outputFile);  
  
            // close the connection  
            connection.disconnect();  
            // 关闭OpenOffice服务的进程  
            pro.destroy();  
  
            return 0;  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
            return -1;  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
  
        return 1;  
    }  
      
    /**
     * 将预览的文件转化为swf文件
     * @param realPath   项目路径             String realPath = request.getRealPath("/");
     * @param fileName   预览的文件名    例如  abc.doc
     * @return String    返回swf文件的文件名
     */
    public static String onlineView(String realPath,String fileName){
    	
    	String sourcePath = null;   //源文件路径
        String destPath = null;        //生成文件路径
        String pdfFileName = null;       //office文件转化为pdf文件时的文件名
        String swfFileName = null;       //pdf文件转化为swf文件时的文件名
        int typeFlag = -1;               //文件类型标记   0表示为office文件,1表示pdf文件
    	int start = fileName.lastIndexOf(".");  
        String firstFileName = fileName.substring(0,start);  
        String lastFileName = fileName.substring(start+1);
        
        /*判断文件类*/
        if ("pdf".equalsIgnoreCase(lastFileName)) {  
        	
        	typeFlag = 1;
        	destPath = realPath+"upload/"+fileName;  	
        	
		}else {
			/** 
			 * Office文件处理
			 * 1.转化为pdf
			 * 2.转化为swf
			 */
			typeFlag = 0;
			/*转化为pdf文件  start*/
			pdfFileName = firstFileName+".pdf";
			sourcePath = realPath+"upload/"+fileName; 
			destPath =  realPath+"tem/"+ pdfFileName; 
	        int flag = Converter.office2PDF(sourcePath, destPath); 
	        if (flag == 1) {
				System.out.println("转化失败");
				return null;
			}else if(flag == 0){
				System.out.println("转化成功");
			}else {
				System.out.println("找不到源文件, 或url.properties配置错误");	
				return null;
			}
	        /*转化pdf文件 end*/
	        
		}
		       
        /* 将pdf转化为swf文件 start */
		sourcePath = destPath;  
		destPath = realPath+"swf/";  
		swfFileName = firstFileName+".swf";  
		try {
			Converter.convertPDF2SWF(sourcePath, destPath, swfFileName);
		} catch (Exception e) {
			e.printStackTrace();
		}  
		if (typeFlag == 0) {   //若预览的为office文件,删除生成的pdf临时文件
			sourcePath = realPath+"tem/"+ pdfFileName;
			File file = new File(sourcePath);
			file.delete();
		}
		/* 将pdf转化为swf文件 end */
		return swfFileName;
    }
    
    public static void main(String []args) throws Exception {  
    	/*测试pdf转化为swf文件*/
    	/*
        String sourcePath = "C:\\Users\\Administrator\\Desktop\\1\\1.pdf";  
        String destPath = "C:\\Users\\Administrator\\Desktop\\1\\";  
        String fileName = "test.swf";  
        Converter.convertPDF2SWF(sourcePath, destPath, fileName);  
        */
    	
    	/*测试office转化为pdf文件*/
    	/*
    	String sourcePath = "C:\\Users\\Administrator\\Desktop\\1\\分组情况一览表.xls"; 
        String destFile = "C:\\Users\\Administrator\\Desktop\\1\\dest.pdf"; 
        int flag = Converter.office2PDF(sourcePath, destFile); 
        if (flag == 1) {
			System.out.println("转化失败");
		}else if(flag == 0){
			System.out.println("转化成功");
		}else {
			System.out.println("找不到源文件, 或url.properties配置错误");			
		}
        */
    }  
}  


网站上传和在线预览实现步骤:

一.将office文件或pdf文件上传到upload目录

二.在线预览文件:

    1.选择要在线预览的文件

    2.若上传为pdf文件转化为swf文件,在实现在线预览

       若为office文件,先转化为pdf文件,在转为swf文件,最后在线预览。

    3.在线预览后将swf文件保存,下次直接调用

       或者

       删除swf文件,下次再通过上述步骤调用

实现具体步骤:(个人版)

1.安装OpenOffice软件,并且将jodconverter的lib包下的包加入项目中
2.安装swftools软件
3.将flexpaper相关文件加入项目
4.Converter.java导入项目


后台调用代码:


String realPath = request.getRealPath("/"); //项目的路径
String fileName = "22.doc";   //预览的文件名
fileName = Converter.onlineView(realPath,fileName);  //返回生成的swf的文件名
request.setAttribute("swfname", "swf/"+fileName);  //将文件名传到前台
request.getRequestDispatcher("/success.jsp").forward(request, response);//跳转



注意:
1.修改相应的参数,如:软件安装路径,文件包路径
2.根据需求修改文件的命名规则

总结:

需要技术:

openoffice和jodconverter-2.2.2:office文件转化为pdf            (安装OpenOffice软件,将jodconverter的lib文件夹中的包加入项目)

swftools:pdf文件转化为swf文件               (安装swftools软件)

FlexPaper :swf文件的在线播放                (解压加入项目)

 类似资料: