2013-06-03 24 views
6

Witam Jestem nowy na phantomjs,Running Phantomjs z JavaScript, JSP lub Java

Mam wygenerowany kod HTML do formatu PDF za pomocą polecenia. Ale chcę wygenerować plik PDF, klikając przycisk na stronie. i zadzwoń phantomjs w jakiś sposób, aby wygenerować mój podany adres URL do pdf.

Możesz także zaproponować api, które generują PDF jako HTML z wykresami i obrazami i mogą być łatwo zintegrowane z JSP i Servlet.

+0

Mam ten sam wymóg. Chcę wydrukować część mojej strony jsp w formacie PDF. Czy możesz powiedzieć, w jaki sposób go wdrożyłeś? –

Odpowiedz

21

Zakładam, że to, co chcesz zrobić, to uruchomić plik wykonywalny phantomjs z kodu Java.

Najpierw musisz znać pełną ścieżkę polecenia, które chcesz wykonać, w twoim przypadku phantomjs. Jeśli ściągnąłeś zip, jest to katalog, do którego rozpakowałeś plik, gdzie zobaczysz plik wykonywalny phantomjs.exe. Jeśli pobrałeś go przez menedżer pakietów, aby dowiedzieć się, pełną ścieżkę uruchomić z terminalu:

which phantomjs 

co spowoduje wyświetlenie czegoś podobnego

/usr/bin/phantomjs 

Gdy masz, że będziesz musiał użyć Runtime klasy, która, między innymi, pozwala uruchamiać polecenia bezpośrednio w systemie operacyjnym przy użyciu exec. To, co uruchomisz, zostanie obsłużone jako Process, z którego możesz odczytać wynik polecenia.

Szybki przykład bez żadnej obsługi wyjątków, które TY POWINIENEŚ robić.

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()); 

Upewnij się zrobić właściwą obsługę błędów, jak jesteś proces tworzenia zewnętrznego do JVM, która JVM nie dokładnie kontroli i może powodować problemy z resztą programu, jeśli nie uda błędy dobrze.

+0

Dziękuję bardzo za Chamakity :) – user2439207

+0

Przyjemność: D Jeśli była to odpowiedź, której szukałeś, możesz oznaczyć ją jako zaakceptowaną i głosować. Jeśli nie była to odpowiedź, której szukałeś, to w porządku. – chamakits

2

Od wersji phantomjs 1.8 jest dostępny Ghost Driver, implementacja protokołu WebDriver Wire Protocol.

Pozwala uruchomić phantomjs jako serwer zdalny, umożliwiający komunikację za pośrednictwem protokołu HTTP.

$ phantomjs --webdriver=PORT

To sprawia, że ​​bez względu na łatwą integrację z języka programowania

Więcej szczegółów spojrzeć here