上一篇文章说的是word,ppt,excel转pdf。其实和这次pdf转swf是一个项目里面的,只不过我分了2步来说
pdf转成swf需要用到的工具是SWFTools,里面有一个exe文件叫pdf2swf,就是我们之后要调的工具
里面还有一个叫做rfxview.swf的文件,是我们嵌套进去的swf模版
嵌套模板了之后,得到的swf不仅有我们所需要最核心的文件内容,还有swf模版上的翻页、全屏、变大变小等,和百度文库差不多。不过我觉得没有百度文库的好看,找了很长时间也没找到好的模板。。。
下载地址
上code咯
核心代码 pdf2swf.java
package com.maze.util; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; public class Pdf2Swf { //工具文件夹路径 public static String SWFTOOLS_PATH="D:/SWFTools/"; //播放器模板路径 public static String RFXVIEW_SWF_PATH="D:/SWFTools/rfxview.swf"; 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 -1; } //pdf转成swf String[] envp = new String[1]; envp[0] = "PATH="+SWFTOOLS_PATH; String command = "cmd /c \""+SWFTOOLS_PATH+"pdf2swf\" -z -s flashversion=9 " + sourcePath + " -o " + destPath + fileName ; Process pro = Runtime.getRuntime().exec(command, envp); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(pro.getInputStream())); while (bufferedReader.readLine() != null) { } try { pro.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } //套用播放器 command = "cmd /c \""+SWFTOOLS_PATH+"swfcombine\" "+RFXVIEW_SWF_PATH+" viewport=" + destPath + fileName + " -o " + destPath +fileName; pro = Runtime.getRuntime().exec(command, envp); bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream())); try { pro.waitFor(); } catch (InterruptedException e) { e.printStackTrace(); } return pro.exitValue(); } }
测试代码test.java
package com.maze.main; import java.io.IOException; import com.maze.util.Pdf2Swf; public class Test { public static void main(String[] args) throws IOException { String sourcePath = "d:\\java.pdf"; String destPath = "d:\\"; String fileName = "test.swf"; Pdf2Swf.convertPDF2SWF(sourcePath,destPath, fileName); } }