5

I need to generate pdf file in using pdfkit in node.js:

I have this code:

doc = new PDFDocument;
doc.pipe; fs.createWriteStream('output.pdf');

doc.fontSize(15);
doc.text('Generate PDF!');

doc.end();

And it will create a pdf file: 'output.pdf' , but everytime I open the file, the file is corrupted. It says: 'Unable to open document File type plain text document (text/plain) is not supported'.

And then I tried:

doc = new PDFDocument;
doc.pipe fs.createWriteStream('output.pdf');

doc.fontSize(15);
doc.text('Generate PDF!');

doc.end();

But there's an error saying:

doc.pipe fs.createWriteStream('output.pdf');
         ^^
Syntax error: Unexpected Identifier

Then, what is the right way to generate pdf files in nodejs? Especially in part of:

doc.pipe fs.createWriteStream

Please help me. Thanks in advance!

4 Answers 4

9

Most of their documentation seems to be written in CoffeeScript. As cool as CoffeeScript is, that makes it a pain for those of us writing plain old JS.

So, anywhere you see spaces in their documentation, you should be able to wrap that function in parenthesis:

doc.pipe(fs.createWriteStream('output.pdf'));
Sign up to request clarification or add additional context in comments.

Comments

2

Try this piece of code.

const fs = require('fs');
const PDFDocument = require('pdfkit');

let options = {
 margins: 50
// you pdf settings here.
}
const doc = new PDFDocument(options);
let out = fs.createWriteStream('output.pdf')
doc.pipe(out);
doc.text('Hellow World.')
doc.end();
out.on('finish', function() {
    // what you want to do with the file.
});

Comments

1

You have to call the fs module before that. Add this at the top of the file:

var fs = require('fs');

1 Comment

it is already called. Already found out the answer. The right syntax for nodejs: doc.pipe(fs.createWriteStream('out.pdf'));
1

It works for me:

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

1 Comment

but many times generates empty PDF, did you get it any time?, requesting to look my question - stackoverflow.com/q/54930985/2034750

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.