[java]代码库
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* PDF转SWF工具
*/
public class PdfToSwf {
/**
* pdf文件后缀名
*/
public static final String FILE_NAME_OF_PDF = "pdf";
/**
* swf文件后缀名
*/
public static final String FILE_NAME_OF_SWF = "swf";
/**
* 获得文件的路径
*
* @param file
* 文件的路径 ,如:"c:/test/test.swf"
* @return 文件的路径
*/
public static String getFilePath(String file) {
String result = file.substring(0, file.lastIndexOf("/"));
if (file.substring(2, 3) == "/") {
result = file.substring(0, file.lastIndexOf("/"));
} else if (file.substring(2, 3) == "\\") {
result = file.substring(0, file.lastIndexOf("\\"));
}
return result;
}
/**
* 新建一个目录
*
* @param folderPath
* 新建目录的路径 如:"c:\\newFolder"
*/
public static void newFolder(String folderPath) {
try {
File myFolderPath = new File(folderPath.toString());
if (!myFolderPath.exists()) {
myFolderPath.mkdir();
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 转化pdf为swf文件
*
* @param sourcePath
* pdf文件路径 ,如:"c:/hello.pdf"
* @param destPath
* swf文件路径,如:"c:/test/test.swf"
* @return 正常情况下返回:0,失败情况返回:1
* @throws IOException
*/
public static int convertPDF2SWF(String sourcePath, String destPath)
throws IOException {
// 如果目标文件的路径是新的,则新建路径
newFolder(getFilePath(destPath));
// 源文件不存在则返回
File source = new File(sourcePath);
if (!source.exists()) {
return 0;
}
String path = PropertiesUtil.getValueByPropertyName(
ClassLoader.getSystemResourceAsStream("toPdf.properties"), "SWFTOOLS_PATH");
// 调用pdf2swf命令进行转换
String command = path
+ "/pdf2swf.exe -t \""
+ sourcePath
+ "\" -o \""
+ destPath
+ "\" -s flashversion=9 -s languagedir=D:\\xpdf\\xpdf-chinese-simplified ";
// 调用外部程序
Process process = Runtime.getRuntime().exec(command);
final InputStream is1 = process.getInputStream();
new Thread(new Runnable() {
public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(
is1));
try {
while (br.readLine() != null)
;
} catch (IOException e) {
e.printStackTrace();
}
}
}).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区
InputStream is2 = process.getErrorStream();
BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));
// 保存输出结果流
StringBuilder buf = new StringBuilder();
String line = null;
while ((line = br2.readLine()) != null)
// 循环等待ffmpeg进程结束
buf.append(line);
while (br2.readLine() != null)
;
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
return process.exitValue();
}
/**
* pdf文件转换为swf文件操作
*
* @param sourcePath
* pdf文件路径 ,如:"c:/hello.pdf"
* @param destPath
* swf文件路径,如:"c:/test/test.swf"
* @return
*/
public static boolean pdf2swf(String sourcePath, String destPath) {
boolean flag = false;
try {
PdfToSwf.convertPDF2SWF(sourcePath, destPath);
flag = true;
} catch (Exception ex) {
flag = false;
}
return flag;
}
}
中级程序员
by: 墙角 发表于:2014-02-25 19:31:05 顶(0) | 踩(1) 回复
mark
回复评论