openOffice+pdf2swf类百度文库):pdf转swf(Linux,window)

1:工具准备
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
我用的版本是:swftools-0.9.1.exe


flexpaper下载
http://code.google.com/p/flexpaper/
这里我们使用已经编译好的FlexPaper的flash版本

 

我用的版本是:FlexPaper_1.4.7_flash.zip

把FlexPaper下载解压到项目的webRoot目录下

Java代码   收藏代码
  1. <div style="position:absolute;left:10px;top:10px;">  
  2.     <a id="viewerPlaceHolder" style="width:660px;height:480px;display:block"></a>  
  3.       
  4.     <script type="text/javascript">   
  5. ar fp = new FlexPaperViewer(      
  6.      'FlexPaper/FlexPaperViewer',  
  7.      'viewerPlaceHolder', { config : {  
  8.      SwfFile : escape(Paper.swf'),  
  9.      Scale : 0.6,   
  10.      ZoomTransition : 'easeOut',  
  11.      ZoomTime : 0.5,  
  12.      ZoomInterval : 0.2,  
  13.      FitPageOnLoad : true,  
  14.      FitWidthOnLoad : false,  
  15.      FullScreenAsMaxWindow : false,  
  16.      ProgressiveLoading : false,  
  17.      MinZoomSize : 0.2,  
  18.      MaxZoomSize : 5,  
  19.      SearchMatchAll : false,  
  20.      InitViewMode : 'Portrait',  
  21.      PrintPaperAsBitmap : false,  
  22.        
  23.      ViewModeToolsVisible : true,  
  24.      ZoomToolsVisible : true,  
  25.      NavToolsVisible : true,  
  26.      CursorToolsVisible : true,  
  27.      SearchToolsVisible : true,  
  28.               
  29.              localeChain: 'en_US'  
  30.      }});  
  31.     </script>  
  32.    </div>  

 

 

 

路径为安装路径代码   收藏代码
  1. import java.io.BufferedReader;  
  2. import java.io.File;  
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.InputStreamReader;  
  6. import java.util.List;  
  7.   
  8. /*  
  9. * PDF转SWF工具  
  10. * @author tangs  
  11. *  
  12. */  
  13. public class Converter {  
  14.     public static int convertPDF2SWF(String sourcePath, String destPath, String fileName) throws IOException {  
  15. //      //目标路径不存在则建立目标路径  
  16.         File dest = new File(destPath);  
  17.         if (!dest.exists()) dest.mkdirs();  
  18.           
  19.         //源文件不存在则返回  
  20.         File source = new File(sourcePath);  
  21.         if (!source.exists()) return 0;  
  22.           
  23.         //调用pdf2swf命令进行转换  
  24. //      String command = "D:\\swftools\\pdf2swf.exe" + " -o \"" + destPath  + fileName +"\"  <SPAN style='COLOR: #ff0000'>-s languagedir=D:\\xpdf\\xpdf-chinese-simplified</SPAN> -s flashversion=9 \"" + sourcePath + "\"";  
  25. //      String command = "D:\\swftools\\pdf2swf.exe" + " -o \"" + destPath  +  fileName +"\" -s flashversion=9 \"" + sourcePath + "\"";  
  26.         String command= "D:/SWFTools/pdf2swf.exe  -t \""+destPath+"\\Java.pdf\" -o  \""+destPath+"\\test.swf\" -s flashversion=9 -s languagedir=D:\\xpdf\\xpdf-chinese-simplified ";    
  27.         System.out.println("cmd:"+command);  
  28.         Process process = Runtime.getRuntime().exec(command); // 调用外部程序     
  29.         final InputStream is1 = process.getInputStream();     
  30.         new Thread(new Runnable() {     
  31.             public void run() {     
  32.                 BufferedReader br = new BufferedReader(new InputStreamReader(is1));      
  33.                 try {  
  34.                     while(br.readLine()!= null) ;  
  35.                 } catch (IOException e) {  
  36.                     // TODO Auto-generated catch block  
  37.                     e.printStackTrace();  
  38.                 }     
  39.             }     
  40.         }).start(); // 启动单独的线程来清空process.getInputStream()的缓冲区     
  41.         InputStream is2 = process.getErrorStream();     
  42.         BufferedReader br2 = new BufferedReader(new InputStreamReader(is2));      
  43.         StringBuilder buf = new StringBuilder(); // 保存输出结果流     
  44.         String line = null;     
  45.         while((line = br2.readLine()) != null) buf.append(line); // 循环等待ffmpeg进程结束     
  46.         System.out.println("输出结果为:" + buf);  
  47.           
  48. //      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(pro.getInputStream()));  
  49.         while (br2.readLine() != null);   
  50.           
  51.         try {  
  52.             process.waitFor();  
  53.         } catch (InterruptedException e) {  
  54.             // TODO Auto-generated catch block  
  55.             e.printStackTrace();  
  56.         }  
  57.           
  58.         return process.exitValue();  
  59.   
  60.           
  61.     }  
  62.   
  63.       
  64.     public static void main(String []args) throws IOException {  
  65.         String sourcePath = "D:\\Java.pdf";  
  66.         String destPath = "D:\\";  
  67.         String fileName = "Javssa.swf";  
  68.         try{  
  69.         Converter.convertPDF2SWF(sourcePath, destPath, fileName);  
  70.           
  71.         }catch(Exception ex)  
  72.         {  
  73.             System.out.println("error");  
  74.         }  
  75.         System.out.println("success");  
  76.       
  77.           
  78.           
  79.     }  
  80. }  

 

如果错误:

Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown character collection 'Adobe-GB1'Error: Couldn't find 'GBK-EUC-H' CMap file for 'Adobe-GB1' collectionError: Unknown CMap 'GBK-EUC-H' for character collection 'Adobe-GB1'Error: Unknown font tag 'F2'Truetype wasn't able to load glyph 0, error 160Truetype wasn't able to load glyph 0, error 160Truetype wasn't able to load glyph 0, error 160Truetype wasn't able to load glyph 0, error

 

改错方法:

swf2pdf转swf时字符集问题

 终于碰到swf2pdf字符集问题呢,今天转一个老的pdf是出现字符集问题,并转换的swf为乱码。
出现的错误如下。

错误现象

 

错误的原因是缺少中文字符集GBK-EUC-H。解决方法使用xpdf增加缺少的字符集。解决步骤如下:

(一) 下载相关的xpdf及字符集

xpdf-3.02pl5-win32.zip
下载地址为
ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.02pl5-win32.zip
xpdf-chinese-simplified.tar.gz
下载地址为
ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz

也可以去http://www.foolabs.com/xpdf/download.html查找你自己需要的字符集

以上两个文件我已经放到附件里面有用的话可以下载

(二) 配置xpdf及字符集

       1:解压xpdf-3.02pl5-win32.zip,解压后修改名称为xpdf,并将其考到c盘根目录下【路径可以随意指定,但是执行pdf2swf指令时要指定到当前目录】。

      

 

       2:解压xpdf-chinese-simplified,将xpdf-chinese-simplified放置xpf目录下

    

       3:修改xpdf-chinese-simplified目录下的add-to-xpdfrc文件

Add-to-xpdfrc代码
Add-to-xpdfrc代码   收藏代码
  1. #----- begin Chinese Simplified support package (2004-jul-27)  
  2. cidToUnicode        Adobe-GB1         D:\xpdf\xpdf-chinese-simplified\Adobe-GB1.cidToUnicode   
  3. unicodeMap            ISO-2022-CN    D:\xpdf\xpdf-chinese-simplified\ISO-2022-CN.unicodeMap   
  4. unicodeMap    EUC-CN        D:\xpdf\xpdf-chinese-simplified\EUC-CN.unicodeMap   
  5. unicodeMap    GBK     D:\xpdf\xpdf-chinese-simplified\GBK.unicodeMap   
  6. cMapDir     Adobe-GB1    D:\xpdf\xpdf-chinese-simplified\CMap   
  7. toUnicodeDir  D:\xpdf\xpdf-chinese-simplified\CMap   
  8. fontDir C:\WINDOWS\Fonts   
  9. displayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\simhei.ttf   
  10. #displayCIDFontTT   Adobe-GB1   /usr/..../gkai00mp.ttf  
  11. #----- end Chinese Simplified support package  

 (三) 执行pdf2swf命令时增加字符集指令

      java代码修改为

 

Java代码   收藏代码
  1. String command= "D:/swftools/pdf2swf.exe  -t \""+path+"\\test.pdf\" -o  \""+path+"\\test.swf\" -s flashversion=9 -s languagedir=C:\\xpdf\\xpdf-chinese-simplified ";  

  以上完成关于字符集乱码的配置。

增加完成后执行命令可以看到adding命令

以上不能全部解决字符集乱码的问题可能还会缺少字符

可以看缺少什么字符集就加什么字符集

Add-to-xpdfrc代码   收藏代码
  1. displayCIDFontTT Adobe-GB1 C:\WINDOWS\Fonts\你的字符集  

附件xpf.rar为我的配置可以参考


http://klo0704.iteye.com/blog/1274048


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值