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, '//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
2sudo apt-get install wkhtmltopdf
Đả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['//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 :
SVG Example :
Canvas Example with Javascript:
document.getElementById["dinamic-content"].innerHTML = 'This string has been appended using javascript';
// Draw circle on canvas
var c = document.getElementById["myCanvas"];
var ctx = c.getContext["2d"];
ctx.beginPath[];
ctx.arc[100,75,50,0,2*Math.PI];
ctx.stroke[];
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ư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