Tôi có div nội dung có id là "nội dung". Trong div nội dung, tôi có một số đồ thị và một số bảng. Tôi muốn tải xuống div đó dưới dạng pdf khi người dùng nhấp vào nút tải xuống. Có cách nào để làm điều đó bằng cách sử dụng javascript hoặc jQuery?Tải xuống một div trong trang HTML dưới dạng pdf bằng cách sử dụng javascript
Trả lời
Bạn có thể làm điều đó bằng jsPDF
HTML:
<div id="content">
<h3>Hello, this is a H3 tag</h3>
<p>a pararaph</p>
</div>
<div id="editor"></div>
<button id="cmd">generate PDF</button>
JavaScript:
var doc = new jsPDF();
var specialElementHandlers = {
'#editor': function (element, renderer) {
return true;
}
};
$('#cmd').click(function() {
doc.fromHTML($('#content').html(), 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
});
doc.save('sample-file.pdf');
});
Tôi gặp vấn đề ở đây. Các css tôi đã thêm vào ở đây là không nhận được áp dụng trong tập tin pdf. Ngoài ra tôi có một số đồ thị quá ..those r không đến trong pdf. Tôi nên làm gì để có được những thứ đó? –
jsPDF không định dạng bảng đúng cách, nó chỉ diễn giải td/th như display: block; – Dave
Nó hoạt động tốt. –
Không có một cơ chế như vậy trong jQuery, nhưng bạn có thể sử dụng plugin như http://www.webresourcesdepot.com/create-pdf-files-with-javascript-jspdf/
Ngoài ra kiểm tra bài này Is it possible to generate PDF using jQuery?
giải pháp của bạn đòi hỏi một số phương pháp ajax để vượt qua html để một back-end máy chủ có một cơ sở html to pdf và sau đó trả về đầu ra pdf được tạo trở lại trình duyệt.
Đầu tiên thiết lập mã phía khách hàng, chúng tôi sẽ thiết lập mã jquery như
var options = {
"url": "/pdf/generate",
"data": "data=" + $("#content").html(),
"type": "post",
}
$.ajax(options)
Sau đó đánh chặn các dữ liệu từ các tập lệnh hệ html2pdf như sau
$html = $_POST['data'];
$pdf = html2pdf($html);
header("Content-Type: application/pdf"); //check this is the proper header for pdf
header("Content-Disposition: attachment; filename='some.pdf';");
echo $pdf;
Ý của bạn là gì "có tiện ích htmltopdf" ?? –
là ok để tham khảo cùng một url hoặc tôi nên thay đổi nó? –
Bạn sẽ cần một url hơi khác để bạn có thể phân biệt giữa hai nội dung – DevZer0
AFAIK không có hàm jquery gốc nào thực hiện điều này. Tùy chọn tốt nhất là xử lý chuyển đổi trên máy chủ. Làm thế nào bạn làm điều này phụ thuộc vào ngôn ngữ bạn đang sử dụng (.net, php, vv). Bạn có thể chuyển nội dung của div tới hàm xử lý chuyển đổi, điều này sẽ trả về một pdf cho người dùng.
Vâng, nó có thể Để chụp div dưới dạng PDF trong JS. Bạn có thể kiểm tra giải pháp được cung cấp bởi https://grabz.it. Họ có JavaScript API đẹp và sạch sẽ cho phép bạn nắm bắt nội dung của một phần tử HTML đơn lẻ như div hoặc span.
Vì vậy, hãy sử dụng nó, bạn sẽ cần và app+key và miễn phí SDK. Việc sử dụng của nó là như sau:
Hãy nói rằng bạn có một HTML:
<div id="features">
<h4>Acme Camera</h4>
<label>Price</label>$399<br />
<label>Rating</label>4.5 out of 5
</div>
<p>Cras ut velit sed purus porttitor aliquam. Nulla tristique magna ac libero tempor, ac vestibulum felisvulput ate. Nam ut velit eget
risus porttitor tristique at ac diam. Sed nisi risus, rutrum a metus suscipit, euismod tristique nulla. Etiam venenatis rutrum risus at
blandit. In hac habitasse platea dictumst. Suspendisse potenti. Phasellus eget vehicula felis.</p>
Để nắm bắt những gì đang được các tính năng id bạn sẽ cần phải:
//add the sdk
<script type="text/javascript" src="grabzit.min.js"></script>
<script type="text/javascript">
//login with your key and secret.
GrabzIt("KEY", "SECRET").ConvertURL("http://www.example.com/my-page.html",
{"target": "#features", "format": "pdf"}).Create();
</script>
Bạn cần phải thay số http://www.example.com/my-page.html
với url mục tiêu của bạn và #feature
cho mỗi công cụ chọn CSS của bạn.
Đó là tất cả. Bây giờ, khi trang được tải một ảnh chụp màn hình hình ảnh bây giờ sẽ được tạo ra trong cùng một vị trí như thẻ script, mà sẽ chứa tất cả các nội dung của các tính năng div và không có gì khác.
Cấu hình và tùy chỉnh khác mà bạn có thể thực hiện với cơ chế chụp màn hình div, vui lòng xem chúng here
Tôi nghĩ rằng bạn chỉ nhận được 1.000 ảnh chụp miễn phí và 100 mẩu tin lưu niệm "miễn phí" với grabz.it. Vì vậy, không phải là một giải pháp vĩnh viễn trừ khi bạn sẵn sàng trả tiền cho nó. – BrettC
- 1. HTML: buộc tải xuống PDF
- 2. Trong Java và HtmlUnit, làm cách nào để đợi trang kết quả tải xuống và tải xuống dưới dạng HTML?
- 3. Triển khai "Tải xuống dưới dạng PDF" trên trang web PHP
- 4. chuyển đổi HTML (có Javascript) sang PDF bằng cách sử dụng JavaScript
- 5. Phân tích các trang PDF dưới dạng javascript Hình ảnh
- 6. Tải xuống Thư viện Javascript dưới dạng hình ảnh?
- 7. Buộc tải xuống liên kết pdf bằng javascript/ajax/jquery
- 8. Xem tệp PDF bằng HTML không tải xuống tệp
- 9. Tải xuống html bằng python?
- 10. Tải xuống CSV dưới dạng HTM
- 11. Tải xuống nhiều tệp dưới dạng thư mục zip bằng cách sử dụng php
- 12. Sử dụng php để bắt buộc tải xuống bản pdf
- 13. Chuyển đổi HTML sang PDF (không phải PDF sang HTML) bằng cách sử dụng PHP
- 14. Cách tải xuống tệp PDF bằng Jersey?
- 15. tải trang html bên trong div
- 16. Tải Tài liệu Google dưới dạng HTML
- 17. Sử dụng javascript để tải xuống tệp dưới dạng tệp .csv
- 18. thêm mục vào danh sách thả xuống trong html bằng cách sử dụng javascript
- 19. Xem PDF dưới dạng một phần của trang
- 20. Cách tải xuống tệp PDF này bằng cách sử dụng php
- 21. Node.js res.setHeader ('content-type', 'text/javascript'); đẩy javascript phản hồi dưới dạng tệp tải xuống
- 22. Tải trang được cuộn xuống dưới cùng
- 23. tải xuống tệp bằng cách gọi .ashx trang
- 24. Cách lưu trang aspx hiện tại dưới dạng html
- 25. Thêm/xóa HTML bên trong div bằng cách sử dụng JavaScript
- 26. Tải một trang html khác từ javascript
- 27. Tải xuống tệp CSV bằng cách sử dụng "AJAX"
- 28. Selenium tải xuống trang đầy đủ html
- 29. Tạo tài liệu PDF từ HTML bằng cách sử dụng JavaScript
- 30. Trang trống bổ sung khi chuyển đổi HTML sang PDF bằng cách sử dụng abcPDF
http://code.google.com/p/jspdf/là thư viện tốt nhất mà tôi biết có thể làm điều này. – AlvinArulselvan
Làm cách nào để sử dụng jsPDF để tải xuống nội dung trong div cụ thể? từ những gì tôi thấy trong các ví dụ trong trang web của họ nó không thể được thực hiện. –