java pdf 转 swf_java pdf 转 swf
Java Process.exitValue & Process.waitFor()
Process.exitValue() 采用非阻塞的方式返回,如果沒有立即拿到返回值,則拋出異常
Process.waitFor() 當前線程等待,如有必要,一直要等到由該 Process 對象表示的進程已經終止。但是如果我們在調用此方法時,如果不注意的話,很容易出現主線程阻塞,Process也掛起的情況。在調用waitFor() 的時候,Process需要向主線程匯報運行狀況,所以要注意清空緩存區,即InputStream和ErrorStream,在網上,很多只提到處理InputStream,忽略了ErrorStream。以下一段代碼,貼出來,僅做參考。
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
/** PDF轉SWF工具
* @author tangs
**/
public class Converter {
public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws IOException {
目標路徑不存在則建立目標路徑 File dest = new File(destPath);
if (!dest.exists()) dest.mkdirs();
//源文件不存在則返回 File source = new File(sourcePath);
if (!source.exists()) return 0;
//調用pdf2swf命令進行轉換//String command = "D:\\swftools\\pdf2swf.exe" + " -o \"" + destPath + fileName +"\" -s languagedir=D:\\xpdf\\xpdf-chinese-simplified -s flashversion=9 \"" + sourcePath + "\"";//String command = "D:\\swftools\\pdf2swf.exe" + " -o \"" + destPath + fileName +"\" -s flashversion=9 \"" + sourcePath + "\""; String command= "D:/SWFTools/pdf2swf.exe -t \""+destPath+"\\Java.pdf\" -o \""+destPath+"\\test.swf\" -s flashversion=9 -s languagedir=D:\\xpdf\\xpdf-chinese-simplified ";
System.out.println("cmd:"+command);
//Process pro = Runtime.getRuntime().exec(command); 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) {
//TODO Auto-generated catch block 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) buf.append(line); //循環等待ffmpeg進程結束 System.out.println("輸出結果為:" + buf);
//BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream())); while (br2.readLine() != null);
try {
process.waitFor();
} catch (InterruptedException e) {
//TODO Auto-generated catch block e.printStackTrace();
}
return process.exitValue();
}
public static void main(String []args) throws IOException {
String sourcePath = "D:\\Java.pdf";
String destPath = "D:\\";
String fileName = "Javssa.swf";
try{
Converter.convertPDF2SWF(sourcePath, destPath, fileName);
}catch(Exception ex)
{
System.out.println("error");
}
System.out.println("success");
}
}
工具準備
swftools.exe 下載
http://www.swftools.org/download.html
安裝至D盤
SWFTools提供了一系列將各種文件轉成swf的工具:
font2swf.exe
gif2swf.exe
jpeg2swf.exe
pdf2swf.exe
png2swf.exe
wav2swf.exe
這里我們只使用pdf2swf.exe
flexpaper下載
http://code.google.com/p/flexpaper/
這里我們使用已經編譯好的FlexPaper的flash版本
總結
以上是生活随笔為你收集整理的java pdf 转 swf_java pdf 转 swf的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ISO20000新版标准(2018)主要
- 下一篇: EC读取风扇转速并在BIOS中显示