2009-12-13 66 views
1

我一直在這個問題heckuva時間,似乎有很多噪音在那裏搜索引擎到底,所以,原諒我,如果我錯過了一顆銀彈。ASP.NET網站,服務器端的DOCX到PDF轉換

基本需求是我必須生成一個同時具有靜態和動態元素的PDF文檔。我開始通過使用包含所有靜態內容的PDF模板來實現這一點,然後我想將各種動態元素注入其中。問題在於PDF不能被這樣操縱,並且取決於我放入其中的動態文本的大小,可能會使其他頁面上的文本溢出。我使用的是iTextSharp,但無法解決這個問題。

可能的後備之一是生成一個DOCX,我已經完成,然後將其轉換爲後端的PDF。我發現這樣做的唯一庫是付費應用程序(如Aspose)。有examples out there沒有這些庫轉換爲PDF,但他們似乎需要一個客戶端應用程序。我通過IIS來做這件事。

爲了使一個更長的故事更長...有沒有免費的庫,將DOCX文件轉換爲PDF服務器端,而無需啓動客戶端應用程序來這樣做?

+1

答-2下面提到的答案使用像LibreOffice/unoconv做的轉換。我確定OP現在已經解決了這個問題,但我只是將我的經驗留給未來的googlers:libreoffice --headless或unoconv不一定會試圖使文檔呈現與MS Word中的文檔完全相同。我的經驗是,如果我使用LibreOffice創建一個.odt文件,生成的PDF非常接近完美,但是使用在Word中創建的.docx或.odt會顯得有點時髦,這可能會或可能不會成爲您的問題應用。你已被警告! – chucksmash 2013-04-01 21:57:15

回答

1

有幾個選擇這裏:

  • 建立一個COM互操作類,將會對您的.docx讀取和「另存爲」功能。您提供的MSDN鏈接不需要在客戶端運行,而是在GAC或ASP.NET的bin目錄中安裝Office程序集。

  • 購買第三方組件爲您完成工作。 Here's just one example with no guarantees

2

我不熟悉任何好的免費應用,但我們使用Aspose.Words來實現類似於您所描述的內容。我們使用靜態文本和郵件合併字段保存Word模板。模板可以是常規的Word文檔,它們不一定是.dot模板。郵件合併字段可以是單個字段,也可以是表格中的可重複數據,因此您可以在不進行動態文檔編輯的情況下輕鬆生成相當複雜的文檔(這總是一個選項)

使用Aspose爲此是如此無摩擦,我會建議使用Aspose,除非成本(這是顯着的)是一個表演停止。支持也很好,這總是額外的好處。

總有一些注意事項...

  • 我本來希望在生成的PDF文件的PDF兼容更多的控制。我們在閱讀生成的PDF文件時遇到了一些老客戶的問題。
  • 郵件合併不好玩。複雜的郵件合併表達式很耗時。
-3

我只是覺得很簡單的解決方案,以任何文件從命令行使用LibreOffice的轉換:

soffice.exe --headless - 轉換到PDF文件。xls

(其餘的谷歌)