2009-12-08 82 views
1

目前,我們使用MS WORD和MS EXCEL來發送需要發送給多個收件人的合併文檔。如何以編程方式生成申請表格/文件?

例如,有一個投訴表格,投訴人需要填寫他/她的姓名,地址等。因此,我們設置了一個.doc文件,其中包含爲郵件合併設置的內容和動態實體,將姓名和地址詳細信息放在excel文件中,我們可以從中愉快地郵件合併以生成全部或只是必要的表格/文件。

但是,我想將此過程自動化,就像投訴人填寫其姓名,地址和其他詳細信息的網站中的表單一樣,我們可以使用它自動生成投訴表單並提供該表單被下載(最好是pdf)。

現在,唯一想到的解決方案是Latex,以便我可以替換所需的實體並將其編譯爲PDF。但是,如果他們提供Latex或不提供這一點,就必須與Webhost協商。

有沒有其他解決方案?我們可以通過其他任何方式完成這項工作,對於大多數虛擬主機解決方案來說,這應該不成問題?

編輯:我寧願一個非.NET或非微軟的解決方案,因爲服務器運行的是linux,而mono可能能夠完成工作,我們的開發人員都不知道任何.NET語言。但是,如果需要的話,我們可能不得不忍受它。

+0

'該位必須與虛擬主機提供商」進行談判 - 這有什麼問題?您使用哪種託管服務? – 2009-12-08 11:10:21

+0

恐怕我無法將服務提供商命名爲公司政策。但是,雖然他們應該能夠提供乳膠,但我只是想確保它能夠使用最好的東西。應該加上,雖然我在這些東西是相當新的:) – Sujoy 2009-12-09 05:52:56

回答

2

使用XSL生成PDF。請檢查以下內容:Apoc XSL-FO

您將需要創建一個帶有必需字段的XML文件並使用此工具對其進行轉換。

+1

謝謝。雖然它看起來不錯,但我更喜歡非.NET解決方案,因爲我不知道任何.NET語言,但我會研究它,如果這是唯一的其他解決方案 – Sujoy 2009-12-08 06:53:49

+0

確定。這些可能會有所幫助:http://www.sagehill.net/docbookxsl/FOprocessors.html – A9S6 2009-12-08 07:01:40

+0

有許多(?)非.NET XSL處理器。 – 2009-12-08 15:07:02

1

如果你想避開.NET,那麼XSL-FO值得一看。嘗試FOray項目。 如果您還沒有經驗,XSLT可能是一個陡峭的學習。另外,用戶無需要求XSLT專家就可以更改模板。

如果您的模板已經在MS Word和MS Excel中,那麼我會堅持在服務器上生成MS文檔。這是現在很容易從代碼一起工作,因爲OpenXML的 - 看看OfficeOpenXMLOpenXMLDeveloper

+0

對於使用docx和xlsx來模板有一些需要說的,所以最終用戶可以維護它們。 然後,您可以使用docx4j或POI將數據合併到它們中。 docx4j可以生成PDF。 – JasonPlutext 2009-12-08 23:47:45

+0

我傾向於說,像標記的PDF一樣,除非生成的文檔有特殊要求,否則docx和xlsx對於這種應用程序來說是過度殺毒。 在linux服務器上實現時,它們也有點笨拙。我更喜歡在我的上面運行更簡約的代碼。 – 2009-12-10 06:34:02

1

我建議在服務器上生成RTF:它很容易使用CPAN的RTF::Writer,具有轉換器產生良好的PDF格式,可以手動編輯自動生成在word中,oo-writer & TextEdit,在主編輯應用程序之間沒有任何非常差的兼容性問題,並且具有體面的文本資源提取工具,其中文本提取比PDF更好。

雖然最好的rtf - > latex轉換器docx2tex取決於System.IO.Packaging.net模塊,但它的單聲道實現還沒有穩定性,但仍有一些支持在rtf &乳膠之間移動。

後記 —不建議:這太過分了這份工作一個笨拙的大錘,但iText將直接從表格數據生成PDF。如果你想做像簽名pdf這樣的花哨的東西,那就是要走的路。

後記#2 —如果分手的Word文檔到使用Word的主控文檔表示單獨的文件,那麼你就可以揍了手工生成的內容的組成部分之一。這使得使用標準的文件-utils和一些簡單的rtf-> doc調整來完成一些近似表單填充的單詞.doc文件變得很容易。