[C#] 網頁Html轉PDF檔(一行程式碼解決)
来源:互联网 发布:侠客风云传 知乎 编辑:程序博客网 时间:2024/05/16 10:37
来自:http://www.dotblogs.com.tw/shadow/archive/2011/09/28/38072.aspx
網頁轉PDF檔做法很多(Convert HTML to PDF in .NET)
這邊紀錄一下老外最多人加分的那篇做法,使用wkhtmtopdf(採GPL授權)可以省很多程式碼
首先到官網http://code.google.com/p/wkhtmltopdf/downloads/list
找installer.exe下載,這邊Demo我是下載wkhtmltopdf-0.9.9-installer.exe
下載完後執行安裝它
選擇要安裝的路徑
安裝完成
(如果要解除安裝的話,就到剛剛安裝的資料夾下找uninstall.exe執行即可)
接著看它的原始使用方式
在安裝路徑下有個wkhtmltopdf.exe檔
到命令提示字元(開始→執行→cmd)
輸入
這邊就抓中國MSDN論壇網頁轉PDF為例
按下Enter轉換完成
打開剛剛轉換完成的PDF檔
該文字的地方就是文字,該圖片的地方就是圖片,該超連結的地方就是超連結
既然知道底層使用方式,那就可以使用
System.Diagnostics.Process.Start 方法 (String, String)
第一個參數傳執行檔路徑,第二個傳參數(URL和PDF檔的存放路徑)
如下:
protected
void
Button1_Click(
object
sender, EventArgs e)
{
//因為是兩個argument,所以記得要空格
System.Diagnostics.Process.Start(
@"D:\wkhtmltopdf\wkhtmltopdf.exe"
,
@"http://msdn.microsoft.com/zh-cn D:\myFileName.pdf"
);
}
此小工具不會像WinForm的WebBrowser控制項一樣會共用IE瀏覽器的Cookie
而且要抓的網頁來源不一定要URL,也可以像這樣直接抓本機上的Html檔轉PDF
protected
void
Button1_Click(
object
sender, EventArgs e)
{
System.Diagnostics.Process.Start(
@"D:\wkhtmltopdf\wkhtmltopdf.exe"
,
@"D:\index.html D:\myFileName.pdf"
);
}
只是抓本機的Html轉成PDF後,圖片會不見這點要注意
相關討論:
如何得知 System.Diagnostics.Process.Start 完畢後的訊息?
網頁資料轉PDF檔
國外討論:
Calling wkhtmltopdf to generate PDF from HTML
另外GridView匯出PDF的話,請參考:
ASP.NET 輕鬆轉 GridView 資料轉檔到 PDF - 使用 iTextSharp
請注意使用iTextSharp預設不支援中文字和背景色
中文字的解決方案:GridView透過iTextSharp輸出PDF中文問題
2011.11.29 好人做到底
把ASP.net C#的Code補完
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
/*要引用以下命名空間*/
using
System.Diagnostics;
using
System.IO;
public
partial
class
_Default : System.Web.UI.Page
{
//Button的Click事件(把Url的網頁內容轉成PDF)
protected
void
btn_execute_Click(
object
sender, EventArgs e)
{
//因為Web 是多執行緒環境,避免甲產生的文件被乙下載去,所以檔名都用唯一
string
fileNameWithOutExtention = Guid.NewGuid().ToString();
//執行wkhtmltopdf.exe
Process p = System.Diagnostics.Process.Start(
@"D:\wkhtmltopdf\wkhtmltopdf.exe"
,
@"http://msdn.microsoft.com/zh-cn D:\"
+ fileNameWithOutExtention + ".pdf");
//若不加這一行,程式就會馬上執行下一句而抓不到檔案發生例外:System.IO.FileNotFoundException: 找不到檔案 ''。
p.WaitForExit();
//把檔案讀進串流
FileStream fs =
new
FileStream(
@"D:\"
+ fileNameWithOutExtention + ".pdf", FileMode.Open);
byte
[] file =
new
byte
[fs.Length];
fs.Read(file, 0, file.Length);
fs.Close();
//Response給用戶端下載
Response.Clear();
Response.AddHeader(
"content-disposition"
,
"attachment; filename="
+fileNameWithOutExtention+
".pdf"
);
//強制下載
Response.ContentType =
"application/octet-stream"
;
Response.BinaryWrite(file);
}
}
- [C#] 網頁Html轉PDF檔(一行程式碼解決)
- HTML转PDF(C#---itextsharp)
- HTML转PDF(C#---itextsharp)
- HTML转PDF(C#---itextsharp)
- HTML转PDF(C#---itextsharp)
- HELLOWIN程式---HELLOWIN.C
- 第一個C程式
- c#asp.net表格Html数据模板转换Pdf文件web打印pdf报表dll
- 【教程】PDF组件Spire.PDF 教程:如何在C#,VB.NET中将HTML样式化文本插入PDF
- web水晶報表在轉入WORD,EXCEL,PDF時出現:拒絕訪問報表檔案。其他程式可能正在使用它1/18
- 使用HTML编写ERP系统的程式
- 第一行代码PDF整篇扫描
- 《第一行代码——Android》pdf
- html to pdf
- Generate PDF from HTML
- 将html生成pdf
- Java Html 转Pdf
- Java Html 转Pdf
- 学习中的扩展知识——不断更新
- C++ 构造函数初始化列表
- 原来是这个样子的!
- js去除空格方法
- 未给任务“CreateRiaClientFilesTask”的必需参数“ClientFrameworkPath”赋值解决方法
- [C#] 網頁Html轉PDF檔(一行程式碼解決)
- 判断是否是IP
- erlang——ETS和DETS表学习笔记
- ecmall数据库表解析
- 完全复制沪深300指数
- Android中在屏幕上涂鸦的例子
- C++之异常处理
- 有关软件开发中的一些想法
- 从那一天起,你就成了我的全部