开发客户网站时遇到了一个需求,客户要求后台上传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

 

 posted on 2017-12-05 14:42  dianli  阅读(1595)  评论(1编辑  收藏  举报