Wkhtmltopdf npm

PDFKit là thư viện tạo tài liệu PDF dành cho Node và trình duyệt giúp việc tạo các tài liệu phức tạp, nhiều trang, có thể in được trở nên dễ dàng. Đoạn mã sau sẽ tạo một tài liệu PDF đơn giản với một số văn bản.
var PDFDocument, doc;

var fs = require("fs");

PDFDocument = require('pdfkit');

doc = new PDFDocument;

doc.pipe(fs.createWriteStream('output.pdf'));

doc.fontSize(25).text('Some text with an embedded font!', 100, 100);

doc.addPage().fontSize(25).text('Here is some vector graphics...', 100, 100);

doc.save().moveTo(100, 150).lineTo(100, 250).lineTo(200, 250).fill("#FF3300");

doc.scale(0.6).translate(470, -380).path('M 250,75 L 323,301 131,161 369,161 177,301 z').fill('red', 'even-odd').restore();

doc.addPage().fillColor("blue").text('Here is a link!', 100, 100).underline(100, 100, 160, 27, {
  color: "#0000FF"
}).link(100, 100, 160, 27, 'http://google.com/');

doc.end();

Chà, điều đó sẽ tạo tệp output.pdf trong đường dẫn mà bạn thực thi tập lệnh. Tuy nhiên, về chức năng, tôi không muốn vẽ các biểu đồ phức tạp bằng mã đó, không

Một giải pháp thay thế cho biểu đồ được tạo phía máy chủ, là tạo biểu đồ bằng Javascript (phía máy khách). Có rất nhiều thư viện Javascript cho phép tạo các biểu đồ ưa thích và bạn có thể truy xuất SVG của nó (hoặc hình ảnh base64) và gửi lại cho máy chủ để đưa chúng vào dưới dạng hình ảnh trong tệp PDF của bạn. Nghe có vẻ hay và thiết thực, tuy nhiên có một nhược điểm với giải pháp này. SVG sẽ thay đổi và sẽ gây ra sự cố với kích thước sau này trong tệp PDF của bạn tùy theo độ phân giải của màn hình người dùng của bạn hoặc kích thước của cửa sổ trình duyệt

Một số ứng dụng web, như một giải pháp, sẽ tạo chế độ xem html dưới dạng phản hồi trong trình duyệt (sẽ hiển thị biểu đồ ưa thích của bạn) và người dùng sẽ cần sử dụng (và biết cách) Trình duyệt để lưu (hoặc in) nội dung dưới dạng PDF. Tuy nhiên, với tư cách là người dùng, bạn có thể chỉ muốn tải xuống tệp PDF bằng một nút duy nhất, chọn nơi bạn muốn lưu tệp đó và chỉ vậy thôi.  

Vấn đề ở khắp mọi nơi, nhưng đó là nơi mà wkhtmltopdf trở nên hữu ích, vì bạn sẽ có thể viết css, html và javascript giống như cách bạn làm trên một trang web (rõ ràng là có một số hạn chế và tối thiểu) và tệp PDF của bạn sẽ trông rất tuyệt

Trong bài viết này, bạn sẽ tìm hiểu cách tạo tệp PDF bằng cách sử dụng wkhtmltopdf trong Node của bạn. dự án js

Yêu cầu

Bạn sẽ cần _____ 14 _____ có sẵn trong hệ thống của mình và có thể truy cập được trong dấu nhắc lệnh. wkhtmltopdf là một công cụ dòng lệnh để kết xuất HTML thành PDF và các định dạng hình ảnh khác nhau bằng công cụ kết xuất Qt WebKit. Chúng chạy hoàn toàn "không đầu" và không yêu cầu dịch vụ hiển thị hoặc hiển thị

  • các cửa sổ. bạn có thể tải xuống trình cài đặt cho từng kiến ​​trúc (x86 và x64) trong khu vực cài đặt. Mặc dù bạn có thể thay đổi đường dẫn của tệp thực thi wkhtmltopdf sau này trong phần cấu hình. yml, nên có thể truy cập wkhtmltopdf dưới dạng biến môi trường trên hệ thống của bạn (nếu bạn không muốn tạo biến môi trường cho wkhtmltopdf, thì bạn có thể cung cấp toàn bộ đường dẫn đến tệp thực thi sau). Bạn có thể đọc cách tạo biến môi trường trong windows ở bài viết này
  • Debian/Ubuntu. Bạn có thể cài đặt bản phân phối từ wkhtmltopdf trực tiếp trong bảng điều khiển bằng lệnh sau
sudo apt-get install wkhtmltopdf

Khi bạn chắc chắn rằng mình đã cài đặt wkhtmltopdf trên hệ thống của mình, hãy tiếp tục sử dụng trong Node. js

Thực hiện

Để xử lý wkhtmltopdf từ Node. js, chúng ta cần dựa vào mô-đun của bên thứ ba. Mô-đun wkhtmltopdf cung cấp trình bao bọc hữu ích cho hướng dẫn dòng lệnh cho wkhtmltopdf để tạo tệp PDF từ Nút. js, để cài đặt mô-đun này, hãy thực hiện lệnh sau trong thiết bị đầu cuối

npm install wkhtmltopdf

Sau khi cài đặt, bạn sẽ có thể yêu cầu mô-đun wkhtmltopdf bằng cách sử dụng 

sudo apt-get install wkhtmltopdf
2

Đảm bảo rằng công cụ dòng lệnh ____14_______ nằm trong ĐƯỜNG DẪN của bạn khi bạn cài đặt xong. Nếu bạn không muốn làm điều này vì lý do nào đó, bạn có thể thay đổi thuộc tính

sudo apt-get install wkhtmltopdf
4 thành đường dẫn đến wkhtmltopdf command line tool:

var wkhtmltopdf = require('wkhtmltopdf');
// If you don't have wkhtmltopdf in the PATH, then provide
// the path to the executable (in this case for windows would be):
wkhtmltopdf.command = "C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe";

Và sau đó bạn sẽ có thể làm việc bình thường với wkhtmltopdf trong Node. js

Tạo PDF từ một trang web

Cung cấp một URL web (với giao thức http hoặc https) làm tham số đầu tiên để hiển thị trang web dưới dạng PDF và cung cấp đường dẫn đầu ra

var wkhtmltopdf = require('wkhtmltopdf');

wkhtmltopdf('http://ourcodeworld.com', { 
    output: 'ourcodeworld.pdf',
    pageSize: 'letter'
});

Tạo PDF từ tệp html

Để tạo tệp PDF từ nội dung của tệp html, hãy cung cấp mã HTML được lấy từ tệp bằng phương pháp

sudo apt-get install wkhtmltopdf
6

________số 8_______

Trong ví dụ này, tệp html sẽ là

sudo apt-get install wkhtmltopdf
7 và nó có nội dung như sau



    
        
    
    
        

Hello World !

This is my awesome first PDF generated using WKHTMLTOPDF with Node.js

UTF-8 Test : κσμε

Image :


Wkhtmltopdf npm

SVG Example :


Canvas Example with Javascript:



Và việc thực thi mã nút sẽ tạo ra một tệp

sudo apt-get install wkhtmltopdf
8 và nó sẽ giống như

Wkhtmltopdf npm

Tạo PDF từ chuỗi html

Cũng giống như cách bạn thực hiện để hiển thị tệp PDF từ tệp HTML, chỉ cần cung cấp chuỗi HTML làm tham số đầu tiên

var wkhtmltopdf = require('wkhtmltopdf');
var htmlContent = "

Test

Hello world

"; wkhtmltopdf(htmlContent, { output: 'demo.pdf', pageSize: 'letter' });

Ghi chú. trong trường hợp bạn muốn trả lại tệp PDF dưới dạng phản hồi, vì bạn đang sử dụng Node. js với máy chủ http, bạn chỉ cần tạo tệp và trả lại tệp dưới dạng phản hồi