У меня есть приложение node.js / express.js, где маршрут создает файл PDF с помощью pdfkit.Это работает, и файл PDF записывается в моей файловой системе как файл.Тем не менее, поток, который мне нужен, был бы без записи файла в файловой системе, а с использованием строки base64, которую можно отправить клиенту.
Следующий подход, однако, создает мне правильный файл PDF, но строка base64 всегда пуста.Как это можно сделать?
const PDFDocument = require('pdfkit');
// Create a document
const doc = new PDFDocument;
// Add an image, constrain it to a given size, and center vertically and horizontally
doc.pipe( fs.createWriteStream('out.pdf') );
// Add another page
doc.addPage()
.fontSize(25)
.text('Here is some vector graphics...', 100, 100);
// Draw a triangle
doc.save()
.moveTo(100, 150)
.lineTo(100, 250)
.lineTo(200, 250)
.fill("#FF3300");
// Apply some transforms and render an SVG path with the 'even-odd' fill rule
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();
// Add some text with annotations
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/');
// Finalize PDF file
doc.end();
// Create base64
function base64Encode(file) {
var body = fs.readFileSync(file);
return body.toString('base64');
}
var base64String = base64Encode('out.pdf');
console.log(base64String);
// API result object to be sent to client
res.status(200).json({
status: "success",
data: base64String,
message: "Congrats! "
});