zoukankan      html  css  js  c++  java
  • swftools工具将pdf文件转换为swf文件 文字丢失

    开发客户网站时遇到了一个需求,客户要求后台上传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: estd\%.swf -t d:pdf127.pdf”,运行结果很顺利,但是又出现了一个新问题,有的swf里文字内容没有了

    这样的客户肯定要骂街了啊-_-

      百度寻找原因,发现帖子都是一样的......自行百度“swftools中文问题”,大概原因就是因为字体不支持,所以转换的时候出不来。

      没办法,只能按照人家说的去尝试一下了,果然还是有效果的,需要下载一个“xpdf-chinese-simplified”,修改文件“add-to-xpdfrc”,下载下来的路径都是写的unix的路径,需要改成windows的,还有在最好加一句“displayCIDFontTT Adobe-GB1 E:xpdf-chinese-simplifiedgkai00mp.ttf”。

      这个“gkai00mp.ttf”也是需要下载的,大概应该是个字体库之类的东西吧。

      全部搞定以后,在进入命令行,这时输入的命令需要加一个参数了“-s”,这个参数有许多的功能,自行“-help”查阅吧。

      命令行的命令此时为“E:swftools>pdf2swf.exe -o e: estd\%.swf -t d:pdf127.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-simplifiedCMap下

    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

  • 相关阅读:
    .netcore下Dapper helper类
    C#各版本新增加功能(系列文章)
    MySQL 查询连续登陆7天以上的用户
    MySQL 8.0版本 自动排序函数dense_rank() over()、rank() over()、row_num() over()用法和区别
    MYSQL 查看锁的方式
    MYSQL 回表查询原理,利用联合索引实现索引覆盖
    ES查询某个字段分词结果
    maven 安装和配置
    Java 注解
    Java 异常
  • 原文地址:https://www.cnblogs.com/dianli_jingjing/p/7986879.html
Copyright © 2011-2022 走看看