高 級 打 字 員 的 技 術 雲. 2011 09 28 [C#] 網 頁 Html 轉 PDF 檔 ( 一 行 程 式 碼 解 決 ) 59927.Net Framework 檢 舉 文 章 2013 09 23 [C#] 網 頁 Html 轉 PDF 檔 ( 一 行 程 式 碼 解 決 ) 網 頁 轉 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 轉 換 完 成 點 部 落 首 頁 訂 閱 RSS 登 入 打 開 剛 剛 轉 換 完 成 的 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:\myFil } 此 小 工 具 不 會 像 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 // 若 不 加 這 一 行, 程 式 就 會 馬 上 執 行 下 一 句 而 抓 不 到 檔 案 發 生 例 外 :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); } }
2013.9.20 追 記 : 今 天 才 發 現 此 程 式 已 經 被 包 裝 成.dll, 可 以 在.net 程 式 碼 叫 用 : 參 考 HTML 轉 PDF 使 用 Pechkin 套 件 by 黑 暗 執 行 緒 然 後 根 據 之 前 同 事 經 驗, 直 接 使 用 wkhtmltopdf.exe 產 PDF, 可 能 在 64 位 元 作 業 系 統 上 產 不 出 來 在 ASP.net MVC 中 使 用 的 話, 請 見 :[ASP.net MVC] 在 Web 專 案 上 使 用 Pechkin 套 件 將 網 頁 轉 成 PDF 檔 回 首 頁 系 列 文 章 [ASP.net] 利 用 SQL Server 的 活 動 監 視 器 ( 圖 形 化 介 面 ) 瞭 解 Connection Pool 運 作 [C#/VB.net] 一 次 只 執 行 一 個 WinForm 視 窗 程 式 [.net C#] 列 舉 型 別 的 轉 型 [C#] 網 頁 Html 轉 PDF 檔 ( 一 行 程 式 碼 解 決 ) [C#/VB.net] 集 合 的 亂 數 排 序 :Java 有 shuffle 方 法 一 行 Code 馬 上 實 現,C#/VB.net 就 用... [C#/ASP.net WebForm] 把 動 態 網 頁 轉 成 靜 態 網 頁 [C#] 用 反 射 ( 映 射 ) 移 除 if else 陳 述 式 [C#] 計 算 地 圖 上 兩 點 座 標 距 離 的 演 算 法 [C#/ASP.net] 經 緯 度 轉 行 政 區 ( 利 用 Google 反 地 理 編 碼 ) [C#] Google 路 徑 規 劃 ( 導 航 資 訊 ) [C#] 利 用 ASP.net WebService 和 Windows Service 實 作 Android 手 機 的 訊 息 推 播 ( 舊 版 C2DM) [C#] 利 用 ASP.net 和 Windows Service 實 作 Android 手 機 的 訊 息 推 播 (2012/6 月 底 GCM 版 ) [C#] 利 用 ASP.net 和 Console 專 案 實 作 ios 的 訊 息 推 播 [C#] EPPlus 讀 寫 (read/write) Excel 檔 範 例 懶 人 Code [C#.net] 產 生 JSON 字 串 的 幾 種 方 式 整 理 [C#] 利 用 Dictionary 集 合 和 委 派 完 整 移 除 if else 的 分 支 判 斷 [C#] IP 轉 經 緯 度 轉 中 文 地 址 [C#/Facebook API] 利 用 Facebook API 發 文, 適 合 前 後 端 平 台 ( 使 用 者 無 需 輸 入 帳 密 方 式 ) [C#/Facebook API] 抓 取 粉 絲 專 頁 的 塗 鴉 牆 訊 息 [C#/NHibernate] 10 分 鐘 快 速 體 驗 NHibernate [C#] 等 比 例 縮 圖 的 程 式 碼 [ASP.net MVC 4][ 小 技 巧 ] 如 何 得 知 用 戶 有 沒 有 開 啟 該 封 Email [C#/WinForm] 無 名 關 站 備 份 相 簿 ( 下 載 實 體 照 片 ) 的 懶 人 程 式 分 享 [ASP.net MVC] 將 HTML 轉 成 PDF 檔 案, 使 用 itextsharp 套 件 的 XMLWorkerHelper ( 附 上 解 決 顯 示 中 文 問 題 ) [ASP.net MVC] ASP.net MVC 整 合 FormsAuthentication 表 單 驗 證 登 入 簡 易 範 例 程 式 碼 [C#] 判 斷 集 合 陣 列 裡 的 日 期 ( 或 數 字 ) 是 否 連 續 n 次 [C#] 抓 取 Java.JRE 檔 和.Net Console.EXE 檔 主 控 台 應 用 程 式 輸 出 的 文 字 [C#/XML/ASP.net MVC] 控 制 字 元 導 致 輸 出 XML 失 敗 '.', hexadecimal value 0x, is an invalid character 解 法
0 則 評 論 The blog of typewriter 職 人 1 登 入 Recommend 分 享 從 最 新 的 優 先 排 序 Start the discussion Be the first to comment. 也 在 THE BLOG OF TYPEWRITER 職 人 出 現 [C#/XML/ASP.net MVC] 控 制 字 元 導 致 輸 出 XML 失 敗 '.', hexadecimal value 0x, is an invalid character 解 法 The blog 1 個 評 論 of 4 typewriter 個 月 前 職 人 點 部 落 柯 喬 文 我 剛 好 遇 到 這 個 問 題, 還 想 說 奇 怪 資 料 庫 看 不 到 那 個 字, 可 是 output 卻 看 得 到 031 的 那 個 箭 頭, 靠 您 的 解 說 順 利 解 決 了, 感 謝 感 謝 [ASP.net] 利 用 SQL Server 的 活 動 監 視 器 ( 圖 形 化 介 面 ) 瞭 解 Connection Pool 運 作 高 級 打 字 員 的 技 術 雲 點 部 落 1 個 評 論 4 個 月 前 daniel SQL Server 的 工 作 階 段 不 等 於 Connection Pool, Connection Pool 存 在 的 位 置 會 是 在 建 立 Connection 物 件 的 地 方, 例 如 Windows Forms Application 應 該 是 該 Application 對 應 的 Process, 若 是 Web Application, 則 應 該 存 在 於 w3wp.exe 裡 面, 訂 閱 d 加 入 Disqus 到 你 的 網 站 Add Disqus Add 隱 私 Google AdSense 線 上 工 具 Convert C# to VB.NET Json Parser Online json2csharp generate c# classes from json string 繁 簡 轉 換 工 具 訊 息 快 報 Microsoft Visual Studio Certification MSDN Magazine 台 灣 微 軟 研 討 會 與 活 動 論 壇 討 論 區 MSDN フォーラム ( 日 本 ) MSDN 論 壇 ( 台 灣 ) MSDN 论 坛 ( 中 国 ) 其 他 部 落 客 The travel of typewriter 職 人 ( 旅 行 版 ) The Will Will Web (Will 保 哥 ) 推 薦 部 落 格 博 客 頻 道 最 新 留 言
柯 喬 文 我 剛 好 遇 到 這 個 問 題, 還 想 說 奇 怪... [C#/XML/ASP.net MVC] 控 制 字 元 導 致 輸 出 XML 失 敗 '.', hexadecimal value 0x, is an invalid character 解 法 The blog of typewriter 職 人 點 部 落 1 month ago daniel SQL Server 的 工 作 階 段 不 等 於 Connection Pool, Connection Pool... [ASP.net] 利 用 SQL Server 的 活 動 監 視 器 ( 圖 形 化 介 面 ) 瞭 解 Connection Pool 運 作 高 級 打 字 員 的 技 術 雲 點 部 落 2 months ago Cathy 謝 謝 版 大 的 分 享, 真 的 很 受 用! 我 想 知 道 如 果 沒 有 子 資 料 不 顯 示 open button 要 如 何 處 理?... [ASP.net] 巢 狀 GridView ( 塞 資 料 行 塞 資 料 列 兩 種 寫 法 ) 5 months ago Shadow To 玉 : 您 的 jsonstr 字 串 要 確 定 是 Array 才 可 以 轉 成 JArray 型 別 Json Array 以 [] 表 示... [ASP.net WebForm] 使 用 Json.Net 第 三 方 套 件 讀 取 JSON 字 串 5 months ago 玉 為 什 麼 我 複 製 會 跑 出 來 'System.InvalidCastException' 類 型 的 例 外 狀 況 發 生 於... [ASP.net WebForm] 使 用 Json.Net 第 三 方 套 件 讀 取 JSON 字 串 5 months ago oi 謝 謝 你 的 激 勵, 很 有 幫 助, 謝 謝 [ 心 得 分 享 ] 我 如 何 取 得 微 軟 MVP 獎 項 5 months ago super api 是 要 易 用, 不 是 比 程 式 技 巧 的... [C#/NHibernate] 10 分 鐘 快 速 體 驗 NHibernate 5 months ago super 準 備 動 作 就 讓 人 失 去 耐 心 了, 誰 會 想 用?? [C#/NHibernate] 10 分 鐘 快 速 體 驗 NHibernate 5 months ago
服 務 規 範 使 用 說 明 廣 告 刊 登 2016 點 部 落 Ver. 2016.4.4.1 電 魔 小 鋪 有 限 公 司 製 作 維 運 ; 登 豐 數 位 科 技 提 供 資 安 檢 測
Click below to find more Mipaper at www.lcis.com.tw Mipaper at www.lcis.com.tw