2013-06-03 33 views
6

您好我是phantomjs的新手,從javascript,JSP或Java運行Phantomjs

我已經通過使用命令生成了HTML到PDF。但我想通過單擊頁面上的按鈕來生成PDF。並通過某種方式調用phantomjs來生成我給定的pdf的URL。

您也可以推薦一些API生成生成PDF爲HTML使用圖表和圖像,並可以方便地與JSP和Servlet集成。

+0

我也有同樣的要求輕鬆集成。我想將我的jsp頁面的一部分打印爲PDF。你能告訴你是如何實現它的? –

回答

21

我假設你想要做的是從運行Java代碼中的可執行phantomjs。

你首先要知道你要執行的命令的完整路徑,你的情況,phantomjs。如果您下載了zip文件,則這是您將文件解壓縮到的目錄,您可以在其中看到phantomjs.exe可執行文件。如果通過包管理器下載了它,找出從終端上運行的完整路徑:

which phantomjs 

這將顯示類似

​​

一旦你有,你就必須使用Runtime類,它可以讓您使用exec直接在操作系統上運行命令。您運行的內容將作爲Process處理,您可以使用它來讀取命令的輸出。

一個沒有任何異常處理的快速例子,你應該做的。

Process process = Runtime.getRuntime().exec("/usr/bin/phantomjs myscript.js"); 
    int exitStatus = process.waitFor(); 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader (process.getInputStream())); 

    String currentLine=null; 
    StringBuilder stringBuilder = new StringBuilder(exitStatus==0?"SUCCESS:":"ERROR:"); 
    currentLine= bufferedReader.readLine(); 
    while(currentLine !=null) 
    { 
     stringBuilder.append(currentLine); 
     currentLine = bufferedReader.readLine(); 
    } 
    System.out.println(stringBuilder.toString()); 

確保做正確的錯誤處理,因爲你正在創建過程中外部的JVM,該JVM並不完全控制,並可能造成問題,你的程序的其餘部分,如果你不管理錯誤很好。

+0

非常感謝你Chamakits :) – user2439207

+0

高興:D 如果這是你正在尋找的答案,你可以將它標記爲已接受,並將其投票。如果這不是你正在尋找的答案,那很好。 – chamakits

2

從phantomjs 1.8版可鬼司機,webdriver的Wire協議的實現。

它允許啓動phantomjs作爲遠程服務器使能與它HTTP通信。

$ phantomjs --webdriver=PORT

這使得與任何編程語言

進一步的細節來看看here