2009-02-26 80 views
10

可能重複:
Convert HTML to PDF in .NET出口從HTML到PDF(C#)

在我們的應用中,我們做HTML文檔報表和出口。 但是現在,我們的客戶需要一個將該文檔保存在電腦上的按鈕。問題是該文件包含圖像。 您可以創建一個Word文檔用下面的代碼:

private void WriteWordDoc(string docName) 
{ 
    Response.Buffer = true; 
    Response.ContentType = "application/msword"; 
    Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.doc", docName.Replace(" ", "_"))); 
    Response.Charset = "utf-8"; 
} 

但問題是,圖像只是一個鏈接因此沒有嵌入文字文件內。

因此,我正在尋找替代品 PDF似乎是一個很好的選擇,有沒有人知道一個好的PDF編寫器的C#? 一個有一些很好的參考,並已正確測試?

+2

請注意,你所做的是**不**創建一個Word文檔。您只是濫用Word的「功能」即使將其屏蔽爲「.doc」文件,也能夠打開HTML文檔。 – 2011-10-26 08:26:41

回答

5

我會選擇在服務器上創建一個PDF文件。有很多產品都這樣做,但您應該研究一下在您的情況下效果最好的產品,請考慮以下幾點:

  • 創建PDF所需的計算機資源。如果這是一個複雜的文檔,它可能需要很長時間,或者減慢對其他用戶的響應速度。
  • 將需要相同功能的併發用戶數
  • 成本(有免費解決方案以及重量級商業產品)。

我不會依賴於Word格式,因爲PDF會給你更多的保證,它將在未來可讀。

此外,嵌入硬鏈接到圖像的選項對我來說似乎不是一個好主意。如果用戶想要打開文檔並且服務器無法訪問會怎麼樣?

2

你將不得不將圖像絕對鏈接到互聯網上的一些可用位置。

將文檔加載到Word中後,將'HTML'文檔保存爲MSWord文檔應該包含圖像(或者可能是一個選項?)。

+0

你另一種選擇是使用VSTO的東西,但我從來沒有用過它。 – leppie 2009-02-26 09:53:39

0

我有had the same problem,但還沒有解決它,因爲我們決定導出一個「無圖像」的文件,因爲它沒有任何圖像。

但是,在搜索問題時,我遇到了this article,介紹瞭如何使用XSLT導出文檔。 我還沒有找到工作的時間,但也許你可以去看看它

4

你有一個更大的問題...保存生成的文件是瀏覽器的特權。即使設置內容類型,瀏覽器如何處理任何特定的文件流,完全取決於瀏覽器。你最好的選擇是使用像ABCpdf這樣的HTML /圖像轉換成PDF。我的軟件運氣非常好,而且他們有很好的支持。當然,這是你必須安裝的第三方工具。如果沒有這樣做,你的下一個最佳選擇可能是創建一個包含圖像和其他文件(CSS,JavaScript?)的HTML壓縮文件,但是這需要相當多的後端邏輯。

某些瀏覽器內置此功能。你可以讓你的用戶使用它。 :)

+0

這是我有過任何經驗的唯一一個。在過去我尋找替代品,但ABCpdf幾乎是鎮上唯一的遊戲。這是一個利基工具。 – Bryan 2009-02-27 17:30:35

+0

我使用通過模擬打印機工作的doPDF。沒有格式丟失的方式。 – Kyte 2010-06-16 18:50:26

0

MS有一個新的頁面描述格式「XPS」,它可以簡單地從WPF編程模型生成,無論是在服務器上還是在客戶端上。有一個XPS閱讀器應用程序,如PDF閱讀器,允許用戶查看和打印XPS文檔。有一個簡單的API來生成XPS文檔。

2

ExpertPDF做HTML轉換爲PDF格式(包括圖像)的一份體面的工作。在內部,它使用IE的託管副本在轉換HTML之前呈現HTML,這意味着該組件不適用於Linux上的Mono,這意味着IE的怪癖是PDF的怪癖。也就是說,它可以很好地渲染適度複雜的佈局,並且可以使用CSS page-break-before等來控制分頁。

+1

ExpertPDF 9.0版及更高版本(2013年12月發佈)現在使用WebKit引擎,因此IE不再是一個因素。 – Theophilus 2014-08-11 20:52:59

2

我喜歡DocRaptor.com創建PDF文件。這是一款可以用任何語言編寫的網絡應用程序,它使用Prince XML,所以結果是高質量的。