开发客户网站时遇到了一个需求,客户要求后台上传pdf文件,前台能以翻书的形式直接访问。
首先想到的是使用js解决,用户访问前端页面时,php将文件路径发送给js,让js呈现出来翻书的效果。在网上百度了一圈也没有找到现成的插件。
于是由某人提供的flash完成,这时就需要将客户在后台上传的pdf文件转换为swf文件才能通过某人提供的flash呈现出来,而且需要pdf的每一页生成一个swf文件,才能出现翻书的效果。这时又由某人提供说,swftools可以完成这个需求,于是迅速百度。
swftools这个工具就不介绍了,因为我也只用到了其中的一小部分功能,而且还是windows版本的......
pdf2swf.exe就是这个工具用来将pdf转换为swf的。命令参数众多,可以“-help”查看。
经过研究,发现只需要两个参数就可以,“-o”,“-help”的解释是“-o , --output file.swf Direct output to file.swf. If file.swf contains '%' (file%.swf), then each page goes to a seperate file.”,正是需要的将pdf每一页生成一个swf文件!!!
还有一个参数,“-t”。
在命令行的具体命令就是“E:\swftools>pdf2swf.exe -o e:\test\d\%.swf -t d:\pdf\127.pdf”,运行结果很顺利,但是又出现了一个新问题,有的swf里文字内容没有了
这样的客户肯定要骂街了啊-_-
百度寻找原因,发现帖子都是一样的......自行百度“swftools中文问题”,大概原因就是因为字体不支持,所以转换的时候出不来。
没办法,只能按照人家说的去尝试一下了,果然还是有效果的,需要下载一个“xpdf-chinese-simplified”,修改文件“add-to-xpdfrc”,下载下来的路径都是写的unix的路径,需要改成windows的,还有在最好加一句“displayCIDFontTT Adobe-GB1 E:\xpdf-chinese-simplified\gkai00mp.ttf”。
这个“gkai00mp.ttf”也是需要下载的,大概应该是个字体库之类的东西吧。
全部搞定以后,在进入命令行,这时输入的命令需要加一个参数了“-s”,这个参数有许多的功能,自行“-help”查阅吧。
命令行的命令此时为“E:\swftools>pdf2swf.exe -o e:\test\d\%.swf -t d:\pdf\127.pdf -s languagedir=e:\xpdf-chinese-simplified”,大概意思就是用这个字体库去解析pdf文件吧。
运行以后,效果很好,没有出现问题,单不知道pdf文件要是出现其它无法识别的字体时需要怎么办......
总结:swftools这个工具还是比较古老的,但是是开源的,这次也只是用到了一部分功能。不知道还有没有其它的比较好用的转换pdf工具。
参考:
1、https://www.cnblogs.com/luckly233/p/5036734.html
SWFTools下载链接: https://pan.baidu.com/s/1gfu7lQz 密码: j5y2
案例2:访问地址:http://blog.csdn.net/nube163/article/details/52495023
问题说明:
使用pdf2swf讲pdf转换成swf,实现在线阅读功能,出现如下问题,原文件如下图
打开后如下图,文字内容丢失:
解决方法:
1、下载xpdf-chinese-simplified
下载链接: https://pan.baidu.com/s/1jHLpn4y 密码: 8i25
2、修改目录下的add-to-xpdfrc文件。将里面的路径设为自己的路径
原文件:
#----- begin Chinese Simplified support package (2011-sep-02) cidToUnicode Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode unicodeMap ISO-2022-CN /usr/local/share/xpdf/chinese-simplified/ISO-2022-CN.unicodeMap unicodeMap EUC-CN /usr/local/share/xpdf/chinese-simplified/EUC-CN.unicodeMap unicodeMap GBK /usr/local/share/xpdf/chinese-simplified/GBK.unicodeMap cMapDir Adobe-GB1 /usr/local/share/xpdf/chinese-simplified/CMap toUnicodeDir /usr/local/share/xpdf/chinese-simplified/CMap #fontFileCC Adobe-GB1 /usr/..../gkai00mp.ttf #----- end Chinese Simplified support package
修改后:
#----- begin Chinese Simplified support package (2011-sep-02) cidToUnicode Adobe-GB1 C:/SWFTools/xpdf-chinese-simplified/Adobe-GB1.cidToUnicode unicodeMap ISO-2022-CN C:/SWFTools/xpdf-chinese-simplified/ISO-2022-CN.unicodeMap unicodeMap EUC-CN C:/SWFTools/xpdf-chinese-simplified/EUC-CN.unicodeMap unicodeMap GBK C:/SWFTools/xpdf-chinese-simplified/GBK.unicodeMap cMapDir Adobe-GB1 C:/SWFTools/xpdf-chinese-simplified/CMap toUnicodeDir C:/SWFTools/xpdf-chinese-simplified/CMap displayCIDFontTT Adobe-GB1 C:/SWFTools/xpdf-chinese-simplified/CMap/gkai00mp.ttf #fontFileCC Adobe-GB1 /usr/..../gkai00mp.ttf #----- end Chinese Simplified support package
注意最后一行的区别,第一种原文件的参数不起作用
3、字体gkai00mp.tff下载地址如下,下载后解压放到xpdf-chinese-simplified\CMap下
http://ftp.gnu.org/gnu/non-gnu/chinese-fonts-truetype/gkai00mp.ttf.gz
或:
链接: https://pan.baidu.com/s/1pKZsmfx 密码: mdyt
4、调用pdf2swf.exe时加参数-s languagedir=C:\\SWFTools\\xpdf-chinese-simplified
资料:http://www.cnblogs.com/qinpeifeng107/archive/2011/08/29/2158879.html