2008-10-01 193 views
16

已經提出了類似的問題,但沒有完全一樣的,所以在這裏。將MS Word文檔轉換爲ASP.NET中的PDF

我們有一個ASP.NET Web服務器上的Microsoft Word文檔集合,其合併字段的值由用戶表單提交填充。字段合併後,服務器必須將文檔轉換爲PDF並將其流式傳輸到瀏覽器。我們的第一個傾向是使用Visual Studio Tools for Office API;然而,我們遇到了this warning from Microsoft

微軟目前並不提倡,不支持,從任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM Microsoft Office應用程序自動化,和NT服務),因爲Office在此環境中運行時可能會出現不穩定的行爲和/或死鎖。

它看起來像場操作可以使用Open XML SDK來完成,但什麼是到Word 2007和文檔轉換爲PDF格式,而無需打開Word中的最佳方式?最佳的解決方案將是低成本,可擴展,內存佔用少,易於部署,並具有.NET API。

回答

12

這不完全開源的,但閱讀Aspose有幾個產品,能做到這一點,

Aspose.Pdf.Kit

Aspose.Pdf.Kit是一個非圖形PDF®文檔操作組件,使兩個.NET和Java開發人員管理現有PDF文件以及管理嵌入在PDF文件中的表單域。 Aspose.Pdf非常適合創建新的PDF文件;但是,開發人員經常需要編輯已經存在的PDF文檔。 Aspose.Pdf.Kit允許他們這樣做。 Aspose.Pdf.Kit允許開發人員創建強大的應用程序,將數據直接合併到PDF文檔以及更新和管理PDF文檔。 Aspose.Pdf.Kit是一款非常棒的產品,可與其他PDF產品一起使用。

Aspose.pdf

Aspose.Pdf是一個非圖形PDF®文檔報表組件,可以讓.NET或Java應用程序中不使用的AdobeACROBAT®從頭開始創建PDF文檔。 Aspose.Pdf價格實惠,並提供了豐富的強大功能,包括:壓縮,表格,圖形,圖像,超鏈接,安全和自定義字體。 Aspose.Pdf支持通過API,XML模板和XSL-FO文件創建PDF文件。 Aspose.Pdf非常易於使用,並且提供了14個用C#和Visual Basic編寫的全功能演示。

查看APIdemos。你可以免費下載一個DLL來試用它。我以前都用過,他們的工作很好。

還有iTextSharp這是一個Java PDF轉換器iText的C#端口。我聽到有人嘗試過,結果不一。

+1

在嘗試了許多不同的產品後,Aspose肯定比其他產品高出一大截。它的主要缺點是成本 - 它不便宜,但你得到你所支付的。 – 2008-11-24 22:07:36

12

問題是「MS Word文檔到ASP.NET中的PDF」,所以我非常疑惑爲什麼Aspose.Pdf和Aspose.Pdf.Kit是上面推薦的。您需要使用Aspose.Words,因爲這是支持將Microsoft Word文檔轉換爲PDF格式的組件。

0

Aspose.Words可能是您的最佳選擇,但它不能完美地轉換所有視覺元素。請參考Muhimbi PDF Converter Web Services。它作爲服務在Windows上運行,但可以從任何非Windows Web服務環境(包括Java和.NET)訪問。

儘管此解決方案需要將MS-Office安裝在服務器上(與應用程序不一定要安裝在同一臺服務器上),但它非常強大,可提供完美的轉換保真度。它竭盡全力解決微軟在其KB文章中提到的死鎖問題。

要生成或修改MS-Word文件,我推薦使用免費Open XML SDK for Microsoft Office。埃裏克懷特維持一個really good Blog關於它。

免責聲明,我從事這個產品。話雖如此,它的效果很好。

1

你應該嘗試爲此使用OpenOffice。它是免費的,並支持一系列文件轉換。我用它將DOC & DOCX文件轉換爲HTML格式,並獲得了出色的結果。

0

微軟PDF插件的詞似乎是最好的解決方案,但現在你應該考慮到它不正確地轉換所有Word文檔爲PDF格式,並在某些情況下,你會看到巨大的差異在word和輸出pdf之間。不幸的是,我找不到任何能夠正確轉換所有word文檔的api。我發現確保轉換的唯一解決方案是100%正確的方法是通過打印機驅動程序轉換文檔。缺點是文檔排隊並逐一轉換,但您可以確定所得到的pdf與docuemtn完全相同。我個人更喜歡使用UDC(通用文檔轉換器)並在服務器上安裝Foxit Reader(免費版),然後通過啓動「Process」並將其Verb屬性設置爲「打印」來打印文檔。轉換完成後,您還可以使用FileSystemWatcher設置信號。