2009-11-06 64 views
12

Tôi muốn chuyển đổi HTML (có chứa JavaScript) sang PDF. Làm thế nào tôi có thể làm điều đó?chuyển đổi HTML (có Javascript) sang PDF bằng cách sử dụng JavaScript

Tôi chỉ muốn hiển thị những gì đang được hiển thị trong trang web. Tôi đang hiển thị một biểu đồ gantt được tạo ra bởi một thư viện JavaScript.

Bây giờ tôi muốn lưu trang web HTML đó dưới dạng PDF, cách thực hiện điều đó?

+9

Java hoàn toàn khác với Javascript! – Ikke

+1

tôi biết, tôi muốn giải pháp bằng cách sử dụng java hoặc javascript. cả hai đều có thể chấp nhận được đối với tôi. –

+0

Một số câu hỏi: Java đã có mặt trong dự án chưa? Làm thế nào Javascript hiện biểu đồ này (hình ảnh, bảng, ...) và nơi dữ liệu đến từ đâu? Tôi nghĩ câu hỏi của bạn sẽ không có giải pháp trực tiếp. – sinuhepop

Trả lời

5

Chúng tôi cũng đang tìm cách chuyển đổi các tệp html với javascript phức tạp thành pdf. Các javasript trong các tập tin của chúng tôi có chứa document.write và thao tác DOM.

Chúng tôi đã thử sử dụng kết hợp HtmlUnit để phân tích các tệp và Flying Saucer để hiển thị thành pdf nhưng kết quả không đủ thỏa đáng. Nó hoạt động, nhưng trong trường hợp của chúng tôi pdf không đủ gần với những gì người dùng muốn.

Nếu bạn muốn dùng thử, đây là đoạn mã để chuyển đổi tệp html cục bộ thành pdf.

URL url = new File("test.html").toURI().toURL(); 
WebClient webClient = new WebClient(); 
HtmlPage page = webClient.getPage(url); 

OutputStream os = null; 
try{ 
    os = new FileOutputStream("test.pdf"); 

    ITextRenderer renderer = new ITextRenderer(); 
    renderer.setDocument(page,url.toString()); 
    renderer.layout(); 
    renderer.createPDF(os); 
} finally{ 
    if(os != null) os.close(); 
} 
+1

mã đá của bạn ... nhưng như bạn đã đề cập nó không phải là 100% tốt ... vì vậy, bạn đã tìm thấy một cái gì đó mới để nâng cao chất lượng của pdf? –

+0

Cách sử dụng mã này trong trang trực quan? Tôi cần điều này trong trang Salesforce Apex –

1

Bạn có thể sử dụng iText để Java chuyển đổi sang PDF.

Using itext to convert HTML to PDF

Tôi đã sử dụng iText rất nhiều và nó rất dễ dàng và bạn tìm hiểu nó nhanh chóng.

+2

Nó không phải là miễn phí cho thương mại – Dejell

+1

@Odelya tốt nó là nếu bạn có thể đưa lên với AGPL :-) – Pointy

+0

itext không thực hiện javascript trong khi chuyển đổi html sang pdf. –

0

dùng của trình duyệt Print...mục trình đơn, bạn có thể sử dụng một Printer Driver PDF, như PDFCreator. Bằng cách này, mọi JavaScript được bao gồm trong trang đều được trình duyệt xử lý khi trang được hiển thị.

PDFCreator là công cụ miễn phí để tạo tệp PDF từ gần như bất kỳ ứng dụng Windows nào.

  • Tạo file PDF từ bất kỳ chương trình nào có thể in
1

Sử dụng một widget trình duyệt (like the one from SWT) để vẽ biểu đồ như một hình ảnh, và sau đó sử dụng iText để tạo PDF từ đó.

0

Với Docmosis hoặc JODReports bạn có thể ăn HTML và Javascript của bạn vào tài liệu quá trình mà có thể tạo ra PDF hoặc doc hoặc các định dạng khác render. Việc chuyển đổi bên dưới được thực hiện bởi OpenOffice để kết quả sẽ phụ thuộc vào các bộ lọc nhập OpenOffice. Bạn có thể thử bằng tay bằng cách lưu trang web của bạn vào một tệp, sau đó tải bằng OpenOffice - nếu có vẻ đủ tốt, thì những công cụ này sẽ có thể cung cấp cho bạn kết quả tương tự dưới dạng PDF.

0

Sao chép và dán mã này vào trang web của bạn để cung cấp liên kết sẽ chuyển đổi trang thành trang PDF.

<a href="javascript:void(window.open('http://www.htmltopdfconverter.net/?convert='+window.location))">Convert To PDF</a> 
+6

không hoạt động nữa. –

0

PhantomJS có tiềm năng để đạt được điều này với nó chụp chức năng mà còn hỗ trợ PDF.

Trong trường hợp bạn muốn thứ gì đó tương tác được trên dòng lệnh; Tôi đã cố gắng xây dựng một ứng dụng cho cái gọi là Nota (vẫn còn trong giai đoạn trứng nước). Nó cho phép JavaScript hiển thị/thao tác và sau đó chụp trang dưới dạng PDF.

1

tôi khuyên bạn nên sử dụng wkhtmltopdf: http://wkhtmltopdf.org/

+0

Tôi gặp sự cố khi hiển thị các trang HTML có kích thước A4 (với kích thước được xác định bằng milimet). Nó chỉ loại bỏ tất cả các lề khi specfied + áp dụng một yếu tố zoom (vô nghĩa). Tại sao tôi cần phải phóng to để loại bỏ hoàn toàn lợi nhuận? Theo tôi đây là hành vi bị lỗi. Tôi sử dụng thư viện EssentialObjects.PDF mà làm một công việc tốt hơn tại điền vào toàn bộ không gian A4. –

+0

@MikedeKlerk: Tôi có một số vấn đề tương tự với in trang A4 nhưng tôi đã giải quyết nó, tuy nhiên, tôi không nhớ giải pháp chính xác nhưng một phần của nó đã chỉ định kích thước tài liệu html theo pixel kết hợp với một số đối số dòng lệnh cho wkhtmltopdf . Hãy xem hướng dẫn sử dụng, tôi nghi ngờ các cờ ký quỹ có thể trợ giúp: http://wkhtmltopdf.org/usage/wkhtmltopdf.txt – arkod

0

Kiểm tra này ra http://www.techumber.com/2015/04/html-to-pdf-conversion-using-javascript.html

Về cơ bản bạn cần phải sử dụng html2canvas và jspdf để làm cho nó làm việc. Trước tiên, bạn sẽ chuyển đổi dom của bạn thành hình ảnh và sau đó bạn sẽ sử dụng jspdf để tạo pdf với hình ảnh.

EDIT: Lưu ý ngắn về cách hoạt động của nó. Chúng tôi sẽ sử dụng hai thư viện để thực hiện công việc này. http://html2canvas.hertzen.com/https://github.com/MrRio/jsPDF Trước tiên, chúng tôi sẽ tạo hình ảnh dom bằng cách sử dụng html2canvas chúng tôi sẽ sử dụng phương pháp jspdf addImage để thêm hình ảnh đó vào pdf. Nó có vẻ đơn giản nhưng có vài lỗi trong jsPdf và html2cavas vì vậy bạn có thể cần phải thay đổi phong cách dom tạm thời. Hy vọng điều này sẽ hữu ích.

-1

Bạn có thể làm điều đó bằng cách sử dụng plugin jquery,

this is the link. Tuy nhiên hướng dẫn của nó có thể không làm việc, vì vậy sử dụng liên kết này để có được các plugin, nó làm việc

Sử dụng mã này để liên kết các nút ...

$(document).ready(function() { 
    $("#button_id").click(function() { 
     window.print(); 
     return false; 
    }); 
}); 

Liên kết này có thể cũng hữu ích: 10 jQuery PrintPdf Page Options

+0

Bạn có thể giải thích trong câu trả lời của bạn như thế nào là một giải pháp để lưu một trang HTML dưới dạng PDF? Asker không nói gì về việc in ấn ... – trincot

+0

"10 Tùy chọn trang in jQuery" chỉ là tên liên kết, plugin này sẽ cung cấp cho trang HTML dưới dạng PDF .., tuy nhiên có một nút trong plugin có tên là "IN", nhưng nó sẽ cung cấp một tệp pdf .. – Dushman

+0

OK , sẽ là tốt đẹp để thêm thông tin này trong câu trả lời của bạn, vì nó là khá đáng ngạc nhiên để đọc * Sử dụng mã này để liên kết nút in ... * khi Asker đã không đề cập đến một nút in ở tất cả. – trincot

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