通过代码将PDF转换成SWF来说,现在比较常用的一种方式就是利用SWFTools工具中的pdf2swf(http://www.swftools.org/)。这个工具还是比较好用的。转换成的SWF文件质量也不错。
/**
- ?*?PDF转SWF工具??
- ?*?@author?tangs??
- ?*??
- ?*/??
- public?class?Converter?{??
- ????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:Program?FilesSWFToolspdf2swf.exe"?+?"?-o?""?+?destPath?+?""?+?fileName?+?""??<span?style="color:?#ff0000;">-s?languagedir=D:xpdfxpdf-chinese-simplified</span>?-s?flashversion=9?""?+?sourcePath?+?""";??
- ????????Process?pro?=?Runtime.getRuntime().exec(command);??
- ????????BufferedReader?bufferedReader?=?new?BufferedReader(new?InputStreamReader(pro.getInputStream()));??
- while?(bufferedReader.readLine()?!=?null);???
- try?{??
- ????????????pro.waitFor();??
- ????????}?catch?(InterruptedException?e)?{??
- ??????????????
- ????????????e.printStackTrace();??
- ????????}??
- return?pro.exitValue();??
- ????}??
- ??????
- void?main(String?[]args)? ????????String?sourcePath?=?"c:test.pdf";??
- ????????String?destPath?=?"c:";??
- ????????String?fileName?=?"test.swf";??
- ????????Converter.convertPDF2SWF(sourcePath,?destPath,?fileName);??
- }??
?
??? 就这么简单的几行代码就可以了。但是在程序中遇到中文就会出现意想不到的情况,这个也不例外。在转换中,我发现有些中文PDF文件转换后会出现乱码的现象,因此这里还要处理一下乱码的问题。看到上面代码中红色的一段了吗?这就是解决乱码的方法。这个方法是参考了http://hi.baidu.com/xwx520/blog/item/1d0c423885b392fab311c72e.html这篇文章,感谢作者。
1.下载XPDF:ftp://ftp.foolabs.com/pub/xpdf/xpdf-chinese-simplified.tar.gz,并解压到xpdf-chinese-simplified目录下。
2.下载字体:http://blog.pjoke.com/wp-content/uploads/2009/02/font.zip,并解压到xpdf-chinese-simplified/CMap目录下。
3.修改xpdf-chinese-simplified目录下的add-to-xpdfrc文件。将里面的路径设为自己的路径:
4.参照上面的代码,在调用pdf2swf命令中加入“ -s languagedir=D:xpdfxpdf-chinese-simplified ”参数。
这样乱码的问题就解决了。
这里还有一个模仿百度文库的博客:http://www.voidcn.com/article/p-telbpffr-rn.html