2009-11-04 28 views
1

編輯: 用戶已通知我,他將接受PDF格式也使用XML,XSLT和C#創建RTF或PDF

我要創建在服務器端代碼的簡單RTF或PDF文件,保存在網絡驅動程序中供將來下載。

該信將從我存儲在SQL Server(2005)中的信息填充。我使用Linq-to-Sql模型訪問數據庫。該文檔將由ASP.Net MVC 1.0前端下載。

該文件的結構將是非常基本的。它是一封帶有一些基本信息的信件。

我已經做了一些衝浪,並看到一些推薦我使用XSLT生成RTF文件。

任何人都可以推薦一個很好的教程嗎?我以前從未使用過XSLT,因此「For Dummies」教程非常棒!

任何其他技術建議,將不勝感激。尋找一個快速的勝利,並不需要是完美的解決方案。

感謝

Ç

回答

3

如果採用這種方式,那麼你就運行工作流將沿着線的東西:

  1. SQL服務器 - >內部表示
  2. 內部表示 - > XML表示(可能使用Linq到XML)
  3. XML + XSLT - >輸出表示。

基本上,XSLT所做的是讓你從它根據一組比程序的不同功能更強大的規則採取XML產生文本。通過提升學習曲線,我在XSLT方面取得了很大的成功(主要是生成HTML文檔)。我開始着重介紹的這本書是第一版:XSLT:掌握XML轉換。對於初學者和高級用戶,Doug Tidwell(其長名稱現在是第二版)。

實際問題是你想從一個模板生成一個文檔 - 也就是說你將有一組數據,你將能夠通過將數據機械地轉儲到框架中來創建所需的文檔?在這方面的好消息是,你可以用XSLT做lot。更好的消息是,您可以將XLST與應用程序分開存儲,這可以更輕鬆地調整事物,並且還可以讓您選擇可以根據需要應用多個模板。

由於RTF是文本文檔格式(?),因此您應該能夠從XLST生成所需的內容。

PDF的問題 - 如果沿着XSLT路線走下去,那麼您需要將XSL-FO轉換爲PDF文檔,這不僅會帶來更多的複雜性,而且還會帶來更多的複雜性 - 更多要學習。

您的替代方案是直接從您的內部模型生成RTF或PDF。你失去了模板功能,但讓自己更接近你的基本舒適(代碼) - 在這方面isharptext已經有很好的東西說關於它的地方。

我同意w3schools的東西。

我已經走了一步,但重點是,它應該讓你確實想要你的需求,並且會成爲你的工具包的一個積極而靈活的補充,但是你可能會遭受一些痛苦(XSLT是而不是程序性的代碼,如果你試圖用這種方式來對待它,你會很困難)。

+0

對於我的長期進步,我會看看推薦書。我喜歡isharptext的外觀,以便快速完成此操作。你有沒有看到它被起訴與MVC行動之前? – littlechris 2009-11-04 15:39:46

+0

我還沒有使用iSharpText - 我已經通過XSL-FO使用XML完成了XML到PDF ...但是這需要一個合適的工具包,而且大部分都很昂貴。我也是MVC的新手,但在我看來,這只是一個會在動作中發生的事情。除非我錯過了一些東西,如果需要,通過視圖提供鏈接應該很簡單。 – Murph 2009-11-04 15:56:05

2

我已經用於產生PDF文件的兩種技術:

  1. XML - > XSL-FO - >的Apache FOP(格式化對象處理器) - > PDF。優點:如果您瞭解HTML和XSLT,使用XSL-FO創建輸出並不比使用XSLT創建HTML困難得多,但軟件是開源的。缺點:慢; XSL-FO是HTML的一種奇怪的有趣的鏡像形式;您正在將一個大雜亂的Java應用程序集成到您的文檔生產流程中;軟件自2007年以來尚未升級。

  2. XML - > HTML - > Prince XML - > PDF。優點:Prince XML功能快速且功能強大;一旦你的HTML格式解決了,便於創建PDF;軟件是免費的,如果你只是在打印文件。缺點:Prince的CSS分頁擴展功能沒有像我想的那麼好記錄;如果您正在製作PDF文件,軟件不是免費的;軟件的嚴重如果您爲服務器授權,則不是免費的。

這兩種情況的出發點都是XML - > XSLT - > HTML管道,所以我首先要了解這一點。

您可以直接通過XSLT生成RTF和PDF,但要做到這一點,您需要非常親密地瞭解RTF和PDF,特別是PDF,作爲我知道常說的CS教授,非常重要。

+0

關於「CSS + XHTML to PDF」技術,請參閱[爲什麼使用XSL-FO而不是CSS2,將HTML轉換爲好的PDF?](http://stackoverflow.com/q/10641667/287948) 問題與解答。 – 2012-07-26 18:40:52