成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

利用C#將HTM轉換為PDF的幾個步驟

開發 后端
最近工作中遇到一個將HTM轉換為PDF的任務,這是一個有很有用的功能塊,然而很遺憾,網上沒有現成可行(包括開源/免費、易用和可維護性的考慮)方案。既然沒有現成的解決方案就自己著手解決吧。

將HTM轉換為PDF大概可以分兩步實現

第一步,解析HTM,就是將HTM源文件中那一對文本轉換為瀏覽器最終呈現給我們那種圖文并茂的結果。這是一個不可完成的任務,因為目前為止業界的軟件巨頭也沒有誰把HTM解析做得很好的。對比ID、Firefox等瀏覽器的顯示結果便可想而知。既然業界難題,我也就不去鉆牛角尖做技術攻關了,先跳過這步,考慮下一步的事情。

第二步,繪制PDF,這個簡單,網上有很多資料,有興趣的朋友可以研究PDF的文件格式,安裝二進制組裝PDF。我有興趣,然而沒有時間,我覺得軟件從業者時刻都應該關注最有價值的事情。軟件從業者要提高效率的第一法門便是重用,網上有一個叫itextsharp的東西是用來繪制PDF的,可以免費使用而且開源。

下載itextsharp,試著用itextsharp繪制HTM看看效果,如您所料,繪制出的是HTM的源代碼。因為第一步的事情我們還沒有解決,下面來解決第一步的事情。

記得很久以前見過一個.NET寫的網頁snap工具,大概思路是利用webbrowser的DrawToBitmap方法將ie的顯示結果輸出到Sytem.Drawing.Bitmap對象。大概代碼如下:

  1. //WebBrowser wb=null;  
  2.  System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(w, h);  
  3.  wb.DrawToBitmap(bmp, new System.Drawing.Rectangle(0,0, w, h)); 

ok,HTM可以解析了,現在重組剛才的代碼,HTM轉換為PDF思路如下:

使用webbrowser將HTM解析并轉換為圖片,使用itextsharp將剛才的圖片繪制成PDF。

有用是給公司開發的功能,暫時不便公開源碼,提供我編譯后的工具供下載使用,您也可以根據上面的思路定制:

使用方法,

1.將單個url轉換為PDF:PageToPDF.exe "http://www.g.cn/" "google.jpg"

2.將多個url轉換為PDF:pagetoPDF.exe task.txt "C:\PDFdir\"

 task.txt是任務里表,里面提供多行url,每個url以#文件名為后綴,如:http://www.baidu.com/#b表示將http://www.baidu.com/轉換為PDF文件名為b(擴展名系統自己會追加)

在ASP.NET環境下使用

將pagetoPDF上傳至網站中,設定好目錄權限,示例代碼:    

  1. public static bool CreatePPDF(string url,string path)  
  2.        {  
  3.            try  
  4.            {  
  5.                if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(path))  
  6.                    return false;  
  7.                Process p = new Process();  
  8.                string str = System.Web.HttpContext.Current.Server.MapPath("~/afafafasf/PageToPDF.exe ");  
  9.                if (!System.IO.File.Exists(str))  
  10.                    return false;  
  11.                p.StartInfo.FileName = str;  
  12.                p.StartInfo.Arguments = " \"" + url + "\" " + path;  
  13.                p.StartInfo.UseShellExecute = false;  
  14.                p.StartInfo.RedirectStandardInput = true;  
  15.                p.StartInfo.RedirectStandardOutput = true;  
  16.                p.StartInfo.RedirectStandardError = true;  
  17.                p.StartInfo.CreateNoWindow = true;  
  18.                p.Start();  
  19.                System.Threading.Thread.Sleep(500);  
  20.                return true;  
  21.            }  
  22.            catch(Exception ex)  
  23.            {  
  24.                Sys.Log.error("PDF create err.",ex);  
  25.            }  
  26.            return false;  
  27.        } 

HTM轉換為PDF特性

在使用任務形式工作時,系統會啟動多個進程,即任務管理器中會有多個pagetoPDF.exe的進程,這是系統調度程序自己啟動的,為了加個任務處理速度。進程數由調度程序自己控制,最多不會超過十個。

【編輯推薦】

  1. 在Visual Studio 2010中使用C# 4.0的動態類型
  2. C#3.0中Lambda表達式詳解
  3. 淺談C#泛型的用處
  4. 淺談C#如何實現多繼承
  5. C#實用基礎教程
責任編輯:彭凡 來源: cnblogs
相關推薦

2009-09-24 15:10:54

C#調用COM組件

2009-07-31 14:09:41

c#時間格式轉換

2023-08-26 16:06:10

COBOLJava數據

2024-09-18 08:00:05

C#編程

2022-10-12 08:00:00

語音識別Node.js音頻質量

2021-10-29 15:13:21

LinuxPDF文件

2009-08-31 13:41:24

C#創建PDF文件

2009-11-02 17:15:42

C#轉換為VB.NET

2009-08-19 16:50:32

Visual C#C#語言特性

2009-08-28 15:52:23

C#利用sharpzi

2021-05-05 10:06:09

React應用程序微前端

2009-08-24 09:55:26

C#接口轉換

2009-08-11 15:46:15

C#日歷控件

2023-05-05 00:19:22

2023-08-25 14:47:56

TransFLACFLAC

2025-06-23 09:21:53

2009-08-13 17:15:44

C#屏幕保護程序

2009-07-31 16:48:44

C#位運算

2009-08-25 17:13:57

C#串口編程

2009-09-07 14:39:14

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美在线观看 | 国产精品久久久久久久久久软件 | 国产精品精品视频一区二区三区 | 亚洲精品一区在线 | 在线观看三级av | 精品国产一区二区 | 日韩精品区 | 亚洲欧美日韩国产综合 | 欧美日韩一区在线播放 | 亚洲综合视频一区 | 丝袜美腿一区 | 日韩亚洲视频 | 国产aaaaav久久久一区二区 | 国产精品久久久久久久久免费高清 | 国产视频1| 一区二区三区视频 | 久久小视频 | 黄色成人av| 91成人免费看片 | 国产精品3区| 精品国产一二三区 | 久草免费在线视频 | 91精品国产综合久久香蕉922 | 在线激情视频 | 丝袜久久| av免费在线播放 | 成人免费视频网站在线看 | 狠狠操狠狠操 | 久久久久网站 | 久久久久久久国产精品视频 | 91视频电影 | 亚洲精品无 | 欧美综合久久久 | 亚洲一区高清 | 亚洲免费在线视频 | 欧美精品1区2区3区 精品国产欧美一区二区 | 91av在线免费| 国产日韩精品视频 | 国产精品视频免费观看 | 日韩精品一区二区三区视频播放 | 国产精品久久久久久婷婷天堂 |