好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

asp.net实现百度文库

asp.net实现百度文库

网上的解决方案一片一片的,我就不一一赘述了。

主要是想写一点我碰到的问题,以及解决方法。

大概流程是这样的,首先利用 abcpdf 将网页生成生成pdf文件,然后使用 swftools 将pdf文件生成swf文件,最后使用 flexpaper 显示。

一 首先是abcpdf的使用,这个比较简单,需要注意的是abcpdf类库分为32位和64位的。

如我的服务器是windows 2003 64,所以对应的abcpdf也要使用64位的,上代码:

     ///   <summary> 
     ///   网页转pdf文件
      ///   </summary> 
     ///   <param name="uri">  网址  </param> 
     ///   <param name="path">  pdf的本地路径  </param> 
     public   static   void   HTML2PDF(String uri, String path)
    {
          using  (WebSupergoo.ABCpdf7.Doc doc =  new   WebSupergoo.ABCpdf7.Doc())
        {
              int  count =  doc.AddImageUrl(uri);
              while  ( true  )
            {
                  if  (! doc.Chainable(count))
                      break  ;
                doc.Page  =  doc.AddPage();
                count  =  doc.AddImageToChain(count);
            }
            doc.Save(path);
        }
    } 

二 然后是swftools的使用,这个是遇到问题最多的一个环节。

1.生成swf的版本问题;

这个问题比较简单,在参数中添加" -s flashversion=9",即可解决。

2.路径中存在空格的问题;

给路径加上双引号,即可解决。

3.pdf文件中文无法转换的问题;

这个就太坑爹了, 网上的解决方案 ,千篇一律,但是我尝试后发现任然无法成功转换(有成功实现的码友,烦请告知缘由。)

后来发现直接用pdf2swf.exe,或者使用IIS Express浏览网页,也就是说不使用IIS,可以正常转换。

所以猜测是因为权限问题,导致转换不成功。 修改网站应用程序池的预定义用户为本地系统,问题解决,当然这个地方要注意安全问题,如下图。

4.pdf文件中文太多,导致在flexpaper中显示时操作不流畅的问题。

还是中文问题,这个问题网上没有搜到。一时没了脾气,不得不仔细查看 swftools 参数 ,无果。

由于本人文学水平有限,理解能力不够,只得抱着试一试的心态,把每个参数都尝试一下。

最后发现"-G" ----- Remove as many clip layers from file as possible. 在文件中尽量去除影片层,合并它们。

对flash了解不多,影片层更是没有听过,但是不管怎么样,问题解决,下面贴代码。

    
    private static String ToolPath = @"你下载的swftools工具的路径";
/// <summary> /// pdf文件转swf文件 /// </summary> /// <param name="pdfPath"> pdf文件路径 </param> /// <param name="swfPath"> swf文件路径 </param> /// <returns></returns> public static void PDF2SWF(String pdfPath, String swfPath) { Process pc = new Process(); ProcessStartInfo psi = new ProcessStartInfo(ToolPath, String.Format( @" ""{0}"" -o ""{1}"" {2} " , pdfPath, swfPath, @" -s flashversion=9 -G " )); pc.StartInfo = psi; pc.Start(); pc.WaitForExit(); }

三 使用flexpaper显示swf文件

没有什么难点,大部分问题在上面已经解决,直接给链接吧,园子里的。

flexpaper实现文档在线浏览

头一回写博客,额,就这。

 

 

标签:  abcpdf ,  swftools

作者: Leo_wl

    

出处: http://www.cnblogs.com/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于asp.net实现百度文库的详细内容...

  阅读:48次