/** |
*OpenOffice可以到官网下载最新版的SWFTools也是直接搜索名字即可 |
*OpenOffice转2007版本一下的支持比较好2010以上对插入的艺术字表格等会丢失但是文字和图片还是没有问题的 |
*/ |
package com.java.doc2pdf; |
import java.io.BufferedInputStream; |
import java.io.File; |
import java.io.FileNotFoundException; |
import java.io.IOException; |
import java.io.InputStream; |
import java.net.ConnectException; |
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; |
/** |
* doc docx格式转换 |
*/ |
public class DocConverter { |
|
|
//Test测试方法 |
public static void main(String[] args) throws Exception { |
DocConverter d = new DocConverter(); |
String fileString = "美文.doc" ; |
String fileName = fileString.substring( 0 , fileString.lastIndexOf( "." )); |
int a = d.office2PDF( "D:\\美文.docx" , "D:\\美文.pdf" ); |
System.out.println(a); |
int b = d.pdf2swf( "D:\\美文.pdf" , "D:\\美文.swf" ,fileName); |
System.out.println(b); |
|
|
|
|
} |
|
/** |
* doc转pdf |
* @param sourceFile |
* @param destFile |
* @return |
*/ |
public int office2PDF(String sourceFile, String destFile) { |
try { |
File inputFile = new File(sourceFile); |
if (!inputFile.exists()) { |
return - 1 ; // 找不到源文件, 则返回-1 |
} |
System.out.println( "FindDocFile" ); |
// 如果目标路径不存在, 则新建该路径 |
File outputFile = new File(destFile); |
if (!outputFile.getParentFile().exists()) { |
outputFile.getParentFile().mkdirs(); |
} |
System.out.println( "mkPdfFile" ); |
//这里是OpenOffice的安装目录 |
String OpenOffice_HOME = "C:/Program Files (x86)/OpenOffice 4" ; |
// 如果从文件中读取的URL地址最后一个字符不是 '\',则添加'\' |
System.out.println(OpenOffice_HOME); |
if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1 ) != '\\' ) { |
OpenOffice_HOME += "\\" ; |
} |
// 启动OpenOffice的服务 |
System.out.println( "OpenOfficeStart" ); |
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(); |
System.out.println( "OpenOfficeStop" ); |
return 0 ; |
} catch (FileNotFoundException e) { |
e.printStackTrace(); |
return - 1 ; |
} catch (ConnectException e) { |
e.printStackTrace(); |
} catch (IOException e) { |
e.printStackTrace(); |
} |
|
return 1 ; |
} |
|
/** |
* pdf转换成 swf |
* @throws Exception |
*/ |
|
private int pdf2swf(String pdfFile, String swfFile,String fileName) throws Exception { |
try { |
File inputFile = new File(pdfFile); |
if (!inputFile.exists()) { |
return - 1 ; // 找不到源文件, 则返回-1 |
} |
System.out.println( "FindDocFile" ); |
// 如果目标路径不存在, 则新建该路径 |
File outputFile = new File(swfFile); |
if (!outputFile.getParentFile().exists()) { |
outputFile.getParentFile().mkdirs(); |
} |
System.out.println( "mkSwfFile" ); |
//这里是SWFTools的安装目录 |
String SWFTools_HOME = "F://test//SWFTools//pdf2swf.exe" ; |
System.out.println( "SWFToolsStart" ); |
System.out.println(inputFile.getPath()); |
System.out.println(outputFile.getPath()); |
String command = (SWFTools_HOME |
+ " " +inputFile.getPath()+ " -o " + " " + outputFile.getPath() |
+ " -T 9" ); |
System.out.println( "转换命令:" + command); |
Process pro = Runtime.getRuntime().exec(command); |
System.out.println(loadStream(pro.getInputStream())); |
System.out.println( "swf文件转份成功!!!" ); |
System.out.println(outputFile.getPath()); |
pro.destroy(); |
// if (inputFile.exists()) { |
// inputFile.delete(); |
// } |
System.out.println( "SWFToolsStop" ); |
return 0 ; |
} catch (FileNotFoundException e) { |
e.printStackTrace(); |
return - 1 ; |
} catch (ConnectException e) { |
e.printStackTrace(); |
} catch (IOException e) { |
e.printStackTrace(); |
} |
return 0 ; |
|
} |
|
private static String loadStream(InputStream in) throws Exception { |
int len = 0 ; |
in = new BufferedInputStream(in); |
StringBuffer buffer = new StringBuffer(); |
while ((len = in.read()) != - 1 ) { |
buffer.append(( char ) len); |
} |
return buffer.toString(); |
} |
} |
初级程序员
by: 我是老王 发表于:2016-05-30 17:03:09 顶(0) | 踩(0) 回复
厉害!
回复评论