问题是这样,在CMD中我用命令直接将pdf转换swf文件可以成功,但是在我的程序中直接调用转换就不行,也不报错,我现在不知道是怎么了,我查了一些资料说是我的pdf文件格式不正确,但是那为什么在cmd中就可以成功里,求高手帮解决一下这个问题,在此先谢谢了!

解决方案 »

  1.   

    在命令中可以转,说明文件是没问题的。我做过 从 office文档 转 swf的 (做百度文库效果)说明: http://blog.csdn.net/authorzhh/article/details/7470048
      

  2.   

    /**
     * 用SWFTools把pdf转换为flash文件
     * @param src pdf文件路径
     * @param target 输出的flash文件路径
     * @throws IOException
     */
    public static void converToSWF(String src,String target) throws IOException{
      
       Process pro = null;

       if (isWindowsSystem()) {  //如果是windows系统
       
       String cmd = "D:\\SWFTools\\pdf2swf.exe "+src+" -o "+target+" -T 9" ;//命令行命令
       
       pro = Runtime.getRuntime().exec(cmd);//Runtime执行后返回创建的进程对象
       
    } else {//如果是linux系统,路径不能有空格,而且一定不能用双引号,否则无法创建进程
      
       String[] cmd = new String[6];
       
       cmd[0] = "/usr/local/bin/pdf2swf";
       
       cmd[1] = src;
       
       cmd[2] = "-o";
       
       cmd[3] = target;
       
       cmd[4] = "-T";
       
       cmd[5] = "9";
       
       pro = Runtime.getRuntime().exec(cmd);//Runtime执行后返回创建的进程对象
       
      }

      final InputStream is = pro.getInputStream();
      
      new Thread(
      
      new Runnable(){
      
      public void run(){
      
      BufferedReader br = new BufferedReader(new InputStreamReader(is));
      
      try {
      
    while(br.readLine() != null);

    } catch (IOException e) {

    e.printStackTrace();

    }
      
      }
      
      }
      
     ).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区   
      
      InputStream is_ = pro.getErrorStream();
      
      BufferedReader br_ = new BufferedReader(new InputStreamReader(is_));
      
      StringBuilder buf = new StringBuilder(); // 保存输出结果流  
      
      String line = null;
      
      while((line = br_.readLine()) != null){
      
      buf.append(line); // 循环等待ffmpeg进程结束   
      }
      
      System.out.println("输出结果为:" + buf);
    }

    /**
      * 判断是否是windows操作系统
      * @author iori
      * @return
      */
     private static boolean isWindowsSystem() {
     
      String p = System.getProperty("os.name");
      
      System.out.println(p);
      
      return p.toLowerCase().indexOf("windows") >= 0 ? true : false;
      
     }
      

  3.   

    我也用这个实现了,但是有个问题,如果要转换的文档很大,不如word如果是30多页,项目就直接在那一直加载。很慢。各位大侠如何解决这个问题啊,,感谢啊,我现在在搞毕业设计,很急