1 pdf在linux下有命令行的工具可以转化为flash 2 word ,ppt 通过openoffice的服务模式可以在命令行下转化为pdf , 再使用步骤1 就可以了,这里有一个文档介绍: http://www.artofsolving.com/opensource/pyodconverter 这样, 可以写一个脚本程序来串联整个流程(如果做成工具的话,就不能再图形界面环境下实现这个)。 里面比较麻烦的是word ,ppt to pdf的步骤,我简单在我的vps上尝试一下: sudo yum install python-openoffice.noarch openoffice.org-writer.x86_64 openoffice.org-langpack-zh_CN.x86_64 openoffice.org-pyuno openoffice.org-impress.x86_64 运行 soffice -accept=”socket,port=8100;urp;” 输出: javaldx: Could not find a Java Runtime Environment! /usr/lib64/openoffice.org3/program/soffice.bin X11 error: Can‘t open display: Set DISPLAY environment variable, use -display option or check permissions of your X-Server 所以要做两件事情, 1 建立java运行时环境 2 处理display问题 首先下载并安装最新的jdk : https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFilteredProducts-SingleVariationTypeFilter;pgid=yYdgaHqkkjVSR0EUPIQsoQ3D0000U2mCVFtF;sid=4k13hkOCk7F3hw–tOL-eFMsxz6zu5DCPg6VLoVcx7E7hi12yJM=?DLWidget=true&AutoWidgetDL=&ADWOptLoginReg=fromLogin 第二个问题的解决方案 ,发现了这个帖子: http://www.linuxforums.org/forum/linux-desktop-x-windows/1633-use-dummy-display.html 思路是使用Xvfb来没有显示设备的情况下在内存虚拟一个framebuffer 。 [rainx@vps ~]$ sudo yum install xorg-x11-server-Xvfb 运行之:[rainx@vps ~]$ sudo Xvfb :1 -screen 0 800x600x16 再次运行 soffice : sudo soffice -accept=”socket,port=8100;urp;” -display :0 PS: 之后又找到一个哥们用类似的方式搞vmware的 :http://www.ixpub.net/thread-2264906-1-1.html 进行转换 : [rainx@vps ~]$ python DocumentConverter.py who.docx who.pdf [rainx@vps ~]$ ls -l who.* -rw-r–r– 1 rainx rainx 51823 Jul 13 20:54 who.docx -rw-r–r– 1 root root 690854 Jul 13 20:55 who.pdf who.pdf 就是转换好的文档了, 可以看到转换后的文件还是很大的,不过用阅读器看下,效果还可以.. 这步比较简单,主要是应用 swftools 里的 pdf2swf工具, 下载swftools 可以从这里: http://www.swftools.org/download.html 下载编译之: wget http://www.swftools.org/swftools-0.9.1.tar.gz tar xvzf swftools-0.9.1.tar.gz cd swftools-0.9.1 ./configure make 这个时候,遇到报错 jpeg.c:463: error: conflicting types for ‘jpeg_load_from_mem’ jpeg.h:15: error: previous declaration of ‘jpeg_load_from_mem’ was here make[1]: *** [jpeg.o] Error 1 原来是函数的定义和头文件的声明有点冲突,解决方式比较简单,修改 jpeg.c 的 463行: 改为: int jpeg_load_from_mem(unsigned char*_data, int _size, unsigned char**dest, int*width, int*height) 继续即可, 然后又遇到问题: gcc -DHAVE_CONFIG_H swfrender.o -o swfrender ../lib/libgfxswf.a ../lib/librfxswf.a ../lib/libgfx.a ../lib/libbase.a -L/usr/local/lib -lz -lm ../lib/libgfx.a(gfxfont.o): In function gfxfont_free‘: gfxfont.c.text+0x7c0): undefined reference to glyph_clear’ 解决方法 : sudo yum install freetype-devel 再继续(需要重新./configure ) 在 sudo make install 就可以了 我了个擦,发现没编译pdf2swf,仔细看下./configure提示信息: * The following headers/libraries are missing: jpeglib ungif jpeglib.h gif_lib.h * Disabling pdf2swf tool… 所以先安装上述的库,再重新编译 : sudo yum install libjpeg-devel 试一下 : pdf2swf who.pdf -o who.swf 关于乱码问题,可以参考这个链接: http://www.iteye.com/topic/538361 这样的swf文件有一个问题, 是自动播放的,我们无法对其进行控制,这显然不是我们期望的,所以我们可以通过 -b 来附加一个默认的阅读器, 加上-T9 强制版本为v9(据说可以避免一些单页的pdf显示问题) pdf2swf -T9 -b who.pdf -o who.swf 到这里,生成过程就差不多了,不过显然这个viewer还需要美化,这个我们后面再继续研究 |
引用自: