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實現文檔在線瀏覽

 

頭一回寫博客,額,就這。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM