2013-06-03 60 views
6

Xin chào i am new to phantomjs,Chạy Phantomjs từ javascript, JSP hoặc Java

Tôi đã tạo HTML sang PDF bằng cách sử dụng lệnh. Nhưng tôi muốn tạo PDF bằng cách nhấp vào nút trên trang. và gọi phantomjs bằng cách nào đó để tạo URL đã cho của tôi thành pdf.

Bạn cũng có thể đề xuất một số API tạo PDF tạo dưới dạng biểu đồ và hình ảnh và có thể dễ dàng tích hợp với JSP và Servlet.

+0

Tôi có yêu cầu tương tự. Tôi muốn in một phần trang jsp của tôi dưới dạng PDF. Bạn có thể nói bạn đã thực hiện nó như thế nào? –

Trả lời

21

Tôi giả định rằng những gì bạn muốn làm là chạy các phantomjs thực thi từ bên trong mã Java.

Trước tiên, bạn cần phải biết đường dẫn đầy đủ của lệnh bạn muốn thực thi, trong trường hợp của bạn là phantomjs. Nếu bạn đã tải xuống tệp nén, đây là thư mục mà bạn đã giải nén tệp trong đó bạn sẽ thấy tệp thực thi phantomjs.exe. Nếu bạn đã tải về nó thông qua quản lý gói, để tìm ra đường dẫn đầy đủ chạy từ một thiết bị đầu cuối:

which phantomjs 

nào sẽ hiển thị một cái gì đó giống như

/usr/bin/phantomjs 

Một khi bạn có điều đó, bạn sẽ phải sử dụng các Runtime lớp, trong đó, trong số những thứ khác, cho phép bạn chạy lệnh trực tiếp trên hệ điều hành bằng cách sử dụng exec. Những gì bạn chạy, sau đó sẽ được xử lý dưới dạng Process mà bạn có thể sử dụng để đọc đầu ra của lệnh từ đó.

Ví dụ nhanh không có bất kỳ xử lý ngoại lệ nào mà bạn NÊN đang thực hiện.

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

Hãy chắc chắn để làm xử lý lỗi thích hợp, như bạn đang tạo ra quá trình bên ngoài để JVM, mà JVM không chính xác điều khiển, và có thể tạo ra các vấn đề với phần còn lại của chương trình của bạn nếu bạn không quản lý lỗi tốt.

+0

Cảm ơn bạn rất nhiều Chamakits :) – user2439207

+0

Một niềm vui: D Nếu đó là câu trả lời bạn đang tìm kiếm, bạn có thể đánh dấu nó là được chấp nhận và bỏ phiếu không. Nếu đó không phải là câu trả lời bạn đang tìm kiếm, thì đó là điều tốt. – chamakits

2

Từ phiên bản phantomjs 1.8 có sẵn Ghost Driver, một triển khai của Giao thức dây WebDriver.

Nó cho phép khởi động ảo như máy chủ từ xa cho phép giao tiếp http với nó.

$ phantomjs --webdriver=PORT

Điều này làm cho tích hợp dễ dàng với bất cứ ngôn ngữ

lập trình Để biết thêm chi tiết hãy xem here

Các vấn đề liên quan