FlexPaper+SwfTools实现的在线文档功能

长平狐 发布于 2012/11/06 18:07
阅读 3K+
收藏 2

    最近一个项目需要实现一个在线浏览文档的功能。准备使用FlexPaper配合Pdf2Swf实现。

主要需求在于:

    ➔ 文档页数很多,少则几百页,多则上千页。
    ➔ 相应的文档大小也在50MB以上。

根据需求,将该功能拆分成了三部分:

    ➔ 上传:支持大文件,断点续传。
    ➔ 文件转换服务:在后台进行Pdf转Swf。
    ➔ 在线浏览:分页加载。

其中文件上传部分是我同事实现的,这里主要讲下后台服务和在线浏览部分。

文件转换服务

大体思路是:
    后台服务定时扫描文件夹PdfPath,如果发现Pdf文件,则调用Pdf2Swf.exe,将PDF逐页转换成Swf文件,存入SwfPath中的与文件名称对应的文件夹里。

    这里使用了SwfTools套件中的Pdf2Swf工具:下载

主要代码:

Pdf2Swf调用代码

gentleface.com free icon set

    写服务的时候遇到一个奇怪的Bug,发布为服务的时候,测试用的Pdf文件每次转换到37页的时候就卡住了,但是用命令行进行调试的时候却一切OK。
    Google后发现,原来是Process的output流问题:output流只有2KB,而Pdf2Swf会产生大量输出,2KB很快就耗尽了。

    之前在测试的时候,发现转换过程中会出现文字丢失的现象。这里使用了-s drawonlyshapes 这个参数,将Pdf全部作为图片转换的。这样虽然保证了兼容性,但是牺牲了空间。作为图片生成的Swf比文本格式的Swf要大不少,不知道大家有没有什么好的解决方法。

在线浏览

    FlexPaper支持分页加载,采用{filename[*,padding],total pages}这种语法即可。

主要代码:

FlexPaper分页加载

warning     FlexPaper无法载入中文文件名。如果右上角的圈圈一直在转,注意是不是文件名称的问题。   

参考文章

c# System.Diagnostics.Process 调用外部程序时WaitForExit锁死问题分析及解决方案

FlexPaper+SWFTools 实现仿百度文库及一些小问题

Pdf2Swf命令行参数

解决FlexPaper分页分段加载问题

源码

分页加载:FlexPaper.zip

文件转换服务:PDFtoSWFService.zip


原文链接:http://www.cnblogs.com/penbox/archive/2011/09/02/2163646.html
加载中
0
老大爷,咳咳
老大爷,咳咳
我在网上考到一段

Asp.net 调用pdf2swf.exe把PDF转换为SWF的用法

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
privatestaticvoidConvertCmd(string fileName)
{       
     using (Process p =newProcess())
     {
         string cmdStr = HttpContext.Current.Server.MapPath("~/SWFTools/pdf2swf.exe");
         string savePath = HttpContext.Current.Server.MapPath("~/pdf/");
         // @"""" 相当于一个双引号,之所以要加@"""" 就是为了防止要转换的过程中,文件夹名字带有空格,导致失败
         string sourcePath = @""""+ savePath + fileName + @"""";
         string targetPath = @""""+ savePath + fileName.Substring(0, fileName.LastIndexOf(".")) +".swf"+ @"""";
         string argsStr ="  -t "+ sourcePath +" -s flashversion=9 -o "+ targetPath;
         //调用新进程 进行转换
         ProcessStartInfo psi =newProcessStartInfo(cmdStr, argsStr);
         p.StartInfo = psi;
         p.Start();
         p.WaitForExit();
    }
}

,你看看有没帮助,原文:http://i8fun.com/blog/all/uncategorized/490/


0
老大爷,咳咳
老大爷,咳咳
看起来主要是pdf转换成swf过程中的问题
0
skip
skip

“之前在测试的时候,发现转换过程中会出现文字丢失的现象。”

我在使用中也遇到这种情况,请问LZ后来除了通过图片转换还找到其他方式了没?

0
MichealTian
MichealTian
楼主我也遇到大文件转换问题 ,有什么解决办法么?
返回顶部
顶部