2013-06-03 22 views
6

Hallo ich zu PhantomJS bin hier,PhantomJS Ausführen von Javascript, JSP oder Java

ich HTML in PDF-Befehl unter Verwendung generiert haben. Aber ich möchte PDF generieren, indem ich auf eine Schaltfläche auf der Seite klicke. und rufen phantomjs auf irgendeine Weise, um meine angegebene URL zu PDF zu generieren.

Sie können auch einige API vorschlagen, die Generieren PDF als HTML mit Diagrammen und Bildern generieren und können problemlos mit JSP und Servlet integriert werden.

+0

ich die gleiche Anforderung haben. Ich möchte einen Teil meiner JSP-Seite als PDF drucken. Können Sie sagen, wie Sie es umgesetzt haben? –

Antwort

21

Ich nehme an, dass Sie die phantomjs ausführbare Datei innerhalb von Java-Code ausführen möchten.

Sie müssen zuerst den vollständigen Pfad des Befehls kennen, den Sie ausführen möchten, in Ihrem Fall phantomjs. Wenn Sie die ZIP-Datei heruntergeladen haben, ist dies das Verzeichnis, in das Sie die Datei entpackt haben. Dort sehen Sie die ausführbare Datei phantomjs.exe. Wenn Sie es durch Paket-Manager heruntergeladen haben, um den vollständigen Pfad von einem Terminal laufen herauszufinden:

which phantomjs 

die so etwas wie

/usr/bin/phantomjs 

angezeigt werden Sobald Sie, dass, haben Sie die verwenden Runtime Klasse, mit der Sie unter anderem Befehle direkt auf dem Betriebssystem mithilfe von exec ausführen können. Was Sie ausführen, wird dann als Process behandelt, mit der Sie die Ausgabe des Befehls auslesen können.

Ein schnelles Beispiel ohne die Ausnahmebehandlung, die Sie tun sollten.

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

Stellen Sie sicher, die richtige Fehlerbehandlung zu tun, wie Sie Prozess außerhalb der JVM zu schaffen sind, die die JVM nicht genau Kontrolle der Fall ist, und Fragen im Zusammenhang mit dem Rest des Programms erstellen können, wenn Sie es nicht schaffen, Fehler gut.

+0

Vielen Dank Chamakits :) – user2439207

+0

Ein Vergnügen: D Wenn das die Antwort war, die Sie suchten, konnten Sie es als angenommen markieren und es ablehnen. Wenn es nicht die Antwort war, nach der Sie gesucht haben, dann ist das in Ordnung. – chamakits

2

Von Phantomjs Release 1.8 ist verfügbar Ghost Driver, eine Implementierung von WebDriver Wire Protocol.

Es erlaubt phantomjs als remote server starten http-kommunikation damit zu starten.

$ phantomjs --webdriver=PORT

Dies macht eine einfache Integration mit dem, was Programmiersprache

Für weitere Details werfen Sie einen Blick here