我想實現瀏覽器中的Microsoft Word文檔合併功能,該功能將合併文檔轉換爲PDF並提供給用戶下載。我希望在Google Chrome和Firefox中支持此過程。這是我想它是如何工作的:在瀏覽器中將MS Word文檔轉換爲PDF
- 客戶端JavaScript獲得在DOCX格式的Word模板文件,無論是從一臺服務器,或通過詢問用戶的文件上傳(它可以然後讀取使用FileReader API)
- JavaScript使用其本地數據結構(例如,它通過Ajax獲得的數據列表)將模板擴展爲文檔。它可以通過解壓縮docx文件並處理其內容,或者使用DOCx.js直接執行此操作。模板擴展只是將模板變量替換爲從本地數據結構獲取的值。
- JavaScript然後將展開的模板轉換爲PDF。
- JavaScript提供PDF文件供用戶下載,例如使用Downloadify。
我遇到的困難是在第3步我的理解(基於所有的谷歌搜索,到目前爲止我已經做了)是,我有以下選項:
- 要求本地機器一臺Windows機器,並調用Word,將其轉換爲PDF。這可以通過使用WScript.shell使用一些腳本來完成,並且它在Internet Explorer中看起來可以使用。但基於我讀過的內容,它看起來並不像我可以從Chrome或Firefox中調用WScript.shell,因爲它們的安全限制。
- 我很樂意嘗試使用Silverlight進行轉換,但是我沒有找到足夠的文檔來說明如何做到這一點。理想情況下,如果我使用Silverlight,我想用JavaScript編寫Silverlight代碼,因爲(a)我不太瞭解CSharp,(b)我認爲在JavaScript中會更容易。
- 創建一個Web服務,將給定的docx文件轉換爲pdf文件,並通過Ajax調用該服務。如果可能的話,我寧願不這樣做,原因如下:(a)我嘗試使用docx4java(我是一個相當熟練的Java程序員),但轉換過程太慢,並且不能很好地保存文檔內容; (b)我想避免向網絡發出呼叫,以避免安全問題。看起來有可能在Windows服務器上編寫一些小服務來進行轉換,如果沒有其他好的選擇,我可能會選擇這種方式。
如果我一直不清楚任何事情,請讓我知道。我會感謝您的想法和反饋。
爲什麼必須是客戶端?這可能會更容易使用服務器端服務(如一個無頭的OpenOffice實例進行轉換) –
在客戶端,您必須爲每個瀏覽器(以及可能的每個平臺)構建一個插件,這會花費您很多的時間。 –
嘿,這不是一個好主意。如果你需要這樣做,只需編寫一個只能在ie上運行的ActiveX,並且你需要在Windows MFC類上使用C++的經驗。 – pylover