2012-03-17 33 views
6

Tôi có một trang web trong đó số lượng hợp lý nội dung được tạo động (jquery ajax v.v ...) và có yêu cầu trình bày phiên bản có thể in của nó.

Tôi đang gặp phải tất cả các vấn đề thường gặp khi in lại html/in, mà tôi có thể nhận được, nhưng điều đó khiến tôi suy nghĩ - có cách nào để lấy DOM và tạo ra PDF bằng cách sử dụng javascript. Đó có thể là một câu hỏi daft - nó có vẻ hơi phức tạp, và tôi không quá chắc chắn ngay cả khi tôi có thể xây dựng một tập tin PDF bằng cách sử dụng javascript, làm thế nào tôi sau đó sẽ trình bày nó cho người dùng.

Mọi người nghĩ gì?Tạo PDF có thể in từ html dom

Trả lời

2
var doc = new jsPDF(); 
doc.text(20, 20, 'Hello world!'); 
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.'); 
doc.addPage(); 
doc.text(20, 20, 'Do you like that?'); 
// Output as Data URI 
doc.output('datauri'); 

https://parall.ax/products/jspdf, tôi nghĩ rằng điều này sẽ giúp bạn

+0

Xin chào, cảm ơn - trông thực sự tốt. Đã hy vọng tôi có thể lấy đi với cơ bản lấy những gì đã được xây dựng trong DOM và chỉ đưa ra một vài chi tiết hơn (kích thước trang và các loại tương tự). – Jonny

+0

@Moo Chỉ cần xem liệu điều này có giúp bạn không, [link] http://code.google.com/p/dompdf/ –

+0

@Moo [link] http://stackoverflow.com/questions/1686280/convert-html-having -javascript-to-pdf-using-java-javascript –

0

This là câu hỏi tôi đã hỏi cách đây vài ngày về một loại trang web/vấn đề tương tự. Giải pháp của tôi là: (1) trong Javascript, để đặt cookie và sau đó gọi tập lệnh PHP bằng cách sử dụng location.href = ...; (không phải AJAX) và sau đó (2) có tập lệnh PHP truy cập cookie để xác định loại báo cáo bắt buộc và sau đó lặp lại một biểu mẫu nhắc người dùng tải xuống tệp bằng các tiêu đề chính xác. PHP là một cái gì đó như sau:

header("Content-type: application/vnd.ms-word"); 
header("Content-Disposition: attachment;Filename=test.doc"); 

echo "<html>"; 
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">"; 
echo "<body>"; 
echo "Testing-2-3!"; 
echo "</body>"; 
echo "</html>"; 

Nó chứng minh không thể có được những gì tôi muốn xảy ra bằng cách sử dụng AJAX vì AJAX không bao giờ cho phép bạn nhắc người dùng.

Bạn có thể sử dụng phương pháp này làm điều gì đó tương tự, nhưng trong trường hợp của bạn, bạn sẽ tạo tệp PDF thay vì tệp .doc (hoặc tải xuống tệp được chuẩn bị trước).

Một lợi thế của phương pháp này, tất nhiên, là nó không liên quan đến việc tải lại trang.

+0

Hmm, thú vị. Tôi sẽ chơi đùa với ý tưởng này. Tôi có một vấn đề trong đó tôi có một số đồ thị trên trang được xây dựng trong javascript (zingcharts), vì vậy tôi sẽ cần phải bằng cách nào đó có được những hình ảnh trở lại máy chủ để xây dựng một PDF (hoặc tái tạo các đồ thị trong php). Cuối cùng tôi đang cố gắng để được lười biếng - Tôi có một đại diện tốt đẹp của những gì tôi muốn trên màn hình (html) tại khách hàng. Chỉ cần không thể có được tất cả các trình duyệt để chơi bóng khi nói đến in ấn. – Jonny

+0

Tôi sẽ sử dụng cả hai câu trả lời được đề xuất. Cảm ơn bạn đã giúp đỡ. – Jonny