国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

C# 生轉換網頁為pdf

2024-07-10 13:19:17
字體:
來源:轉載
供稿:網友
從htm生成pdf大概可以分兩步實現,第一步,解析htm,就是將htm源文件中那一對文本轉換為瀏覽器最終呈現給我們那種圖文并茂的結果。這是一個不可完成的任務,因為目前為止業界的軟件巨頭也沒有誰把htm解析做得很好的。對比ie、firefox等瀏覽器的顯示結果便可想而知。既然業界難題,我也就不去鉆牛角尖做技術攻關了,先跳過這步,考慮下一步的事情。
第二步,繪制pdf,這個簡單,網上有很多資料,有興趣的朋友可以研究 pdf的文件格式,安裝二進制組裝pdf。我有興趣,然而沒有時間,我覺得軟件從業者時刻都應該關注最有價值的事情。軟件從業者要提高效率的第一法門便是重用,網上有一個叫itextsharp的東西是用來繪制pdf的,可以免費使用而且開源。
下載itextsharp,試著用itextsharp繪制htm看看效果,如您所料,繪制出的是htm的源代碼。因為第一步的事情我們還沒有解決,下面來解決第一步的事情。
記得很久以前見過一個.net寫的網頁snap工具,大概思路是利用webbrowser的DrawToBitmap方法將ie的顯示結果輸出到Sytem.Drawing.Bitmap對象。大概代碼如下:
//WebBrowser wb=null;
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(w, h);
wb.DrawToBitmap(bmp, new System.Drawing.Rectangle(0,0, w, h));
ok,htm可以解析了,現在重組剛才的代碼,思路如下:
使用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以#文件名為后綴,如:#b表示將轉換為pdf文件名為b(擴展名系統自己會追加)
在asp.net環境下使用
將pagetopdf上傳至網站中,設定好目錄權限,示例代碼:

復制代碼 代碼如下:


public static bool CreatePPDF(string url,string path)
{
try
{
if (string.IsNullOrEmpty(url) || string.IsNullOrEmpty(path))
return false;
Process p = new Process();
string str = System.Web.HttpContext.Current.Server.MapPath("~/afafafasf/PageToPDF.exe ");
if (!System.IO.File.Exists(str))
return false;
p.StartInfo.FileName = str;
p.StartInfo.Arguments = " /"" + url + "/" " + path;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start();
System.Threading.Thread.Sleep(500);
return true;
}
catch(Exception ex)
{
Sys.Log.error("Pdf create err.",ex);
}
return false;
}


特性
在使用任務形式工作時,系統會啟動多個進程,即任務管理器中會有多個pagetopdf.exe的進程,這是系統調度程序自己啟動的,為了加個任務處理速度。進程數由調度程序自己控制,最多不會超過十個。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑龙江省| 汕头市| 渝北区| 香格里拉县| 岑溪市| 黎川县| 佛教| 长垣县| 新晃| 莫力| 平利县| 武定县| 南昌县| 康保县| 普兰店市| 鹤庆县| 明光市| 维西| 关岭| 莆田市| 天水市| 云阳县| 卢龙县| 绥棱县| 丹阳市| 大城县| 旌德县| 华容县| 华池县| 德昌县| 余庆县| 松原市| 张家港市| 衡南县| 万荣县| 旺苍县| 西丰县| 永丰县| 桃源县| 沾化县| 天门市|