2012-12-21 36 views
-2

JavaScript中是否有方法生成可下載PDF或任何其他可包含圖像和文本的文件?我正在研究一個需要此功能的奇怪項目。 JavaScript嵌入在本地存儲的網頁中,我可以完全控制用戶的環境。如果我以某種方式配置本地安全設置,有沒有辦法以JavaScript運行本地進程?無論如何,我要求的原因如下,這裏是我的項目,我在哪裏掛了...JavaScript生成的下載?

我有一個腳本,在用戶選擇他們運行腳本時選擇一個分區上的文件系統。然後腳本獲取所有文件的列表,並生成從文件系統中找到的所有圖像文件的縮略圖文件。然後,這些縮略圖會生成一個HTML頁面,然後由Firefox中的腳本打開。我在腳本生成的頁面中有JavaScript,允許用戶選中並取消選中每個縮略圖旁邊的複選框。目標是一旦用戶選擇了他們感興趣的所有圖像,他們就可以按下一個按鈕來生成他們所選圖像的報告。我不知道如何生成所述報告。我看到一個類似於我的問題,用jsPDF回答,但我不確定這是否是對我的情況最好的解決方案?我只是在尋找想法和建議!如果需要,我很樂意學習其他腳本方法。可以考慮服務器端解決方案,但我想遠離任何本地服務器等等(如PHP和其他東西)。

+0

你能提供一個鏈接到jsPDF的答案嗎? (我只是想確保我的回答不是一回事。) – forivall

+0

可靠的東西ole chap,http://stackoverflow.com/questions/742271/generating-pdf-files-with-javascript – 0xhughes

+0

我可以確定爲什麼downvotes?我發佈了錯誤的內容嗎? – 0xhughes

回答

2

可以爲此目的使用 uri,然後使用HTML5 download attribute使其易於下載。不幸的是,only Chrome currently supports the download attribute。 (儘管據報道支持Firefox 20)。如果沒有下載屬性,用戶仍然可以右鍵單擊進行保存。

Here's a great example該技術在工作中。

+0

我這樣reeeaaaaaaalllllllllllyyyy。發現!芯片芯片cheerio – 0xhughes

+0

現在看起來這是最符合我所尋找的內容,讓用戶使用Chrome不是一個問題,因爲我可以用腳本和所有好東西來調用它。只需要對數據進行自我教育:uri和所有好東西,我很高興嘗試這個!謝謝! – 0xhughes

1

在瀏覽器中的Javascript是沉重沙箱爲了安全起見。您無法通過JS調用直接產生本地進程。就你而言,這聽起來像你也不是運行服務器,而是通過你的腳本創建一個靜態站點。

我嚴重推薦運行的本地服務器,而不是 - 甚至腳本,使用類似Flask,Python中的大微服務器架構。這樣,您的Javascript將能夠與您的「服務器」(這只是您的腳本)進行交互,然後可以根據需要隨時生成PDF。

+0

我肯定會檢查出Flask,我只是試圖迴避在本地機器上運行的服務/服務器,使用它的觀衆(考慮到任何人都在挖掘我的項目!)會在計算機掃盲領域。從0到100.我試圖假裝證明它,我只是知道如果我運行本地服務/服務器,0-10人會以某種方式進行比賽......哈哈。無論如何,我會做一些測試。我在沙箱上讀過雅,這是我懷疑的。我只是不知道我是否可以做任何改變,因爲我完全控制了當地的環境。 – 0xhughes

1

如果您使用cooperate with your server,您可以將請求中的文件內容發送到服務器的隱藏iframe中,並讓服務器將該文件返回,並將其標記爲下載。

但是,似乎沒有辦法在javascript中生成文件,並用「另存爲」對話框將其保存到用戶的機器中。它看起來像是an API in the works for this,但我認爲它還沒有準備好。

另一個可怕的不雅選擇是彈出一個帶有svg代碼的警告窗口(基本上是XML,所以你可以在不需要額外的庫的情況下構建它),並告訴用戶複製並粘貼到記事本中並保存爲.SVG。