Câu trả lời:
Tôi vừa mới viết một thư viện có tên jsPDF để tạo các tệp PDF chỉ bằng Javascript. Nó vẫn còn rất trẻ và tôi sẽ sớm thêm các tính năng và sửa lỗi. Cũng có một vài ý tưởng cho cách giải quyết trong các trình duyệt không hỗ trợ URI dữ liệu. Nó được cấp phép theo giấy phép MIT tự do.
Tôi đã xem qua câu hỏi này trước khi tôi bắt đầu viết nó và nghĩ rằng tôi sẽ quay lại và cho bạn biết :)
Ví dụ tạo tệp PDF "Hello World".
// Default export is a4 paper, portrait, using milimeters for units
var doc = new jsPDF()
doc.text('Hello world!', 10, 10)
doc.save('a4.pdf')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.5/jspdf.debug.js"></script>
Một thư viện javascript đáng nói đến là pdfmake .
Hỗ trợ trình duyệt dường như không mạnh bằng jsPDF, dường như cũng không có tùy chọn nào cho hình dạng, nhưng các tùy chọn định dạng văn bản nâng cao hơn các tùy chọn hiện có trong jsPDF.
Tôi duy trì PDFKit , cũng hỗ trợ pdfmake (đã được đề cập ở đây). Nó hoạt động trong cả Node và trình duyệt và hỗ trợ rất nhiều thứ mà các thư viện khác không có:
Hãy xem http://pdfkit.org/ để có hướng dẫn đầy đủ để tự mình xem PDFKit có thể làm gì. Và để biết ví dụ về loại tài liệu nào có thể được tạo ra, hãy xem tài liệu dưới dạng PDF được tạo từ một số tệp Markdown bằng chính PDFKit: http://pdfkit.org/docs/guide.pdf .
Bạn cũng có thể dùng thử tương tác trong trình duyệt tại đây: http://pdfkit.org/demo/browser.html .
Một dự án thú vị khác là texlive.js .
Nó cho phép bạn biên dịch (La) TeX thành PDF trong trình duyệt.
Bạn có thể sử dụng dịch vụ miễn phí này bằng cách thêm một liên kết tạo pdf từ bất kỳ url nào (ví dụ: http://www.phys.org ):
Ngay cả khi bạn có thể tạo tệp PDF trong bộ nhớ trong JavaScript, bạn vẫn sẽ gặp vấn đề về cách chuyển dữ liệu đó cho người dùng. Thật khó để JavaScript chỉ đẩy một tệp vào người dùng.
Để nhận tệp cho người dùng, bạn muốn gửi máy chủ để trình duyệt hiển thị hộp thoại lưu.
Như đã nói, thực sự không quá khó để tạo tệp PDF. Chỉ cần đọc thông số kỹ thuật.