I am trying to use PhantomJS to render an html page to pdf. I do not want to write the files to disk, I have the html in memory, and I want the pdf in memory.
Using the excellent answer from Pooria Azimi at this question, i am able to get the pdf from a named pipe. When trying the same on the other end (replacing the input file with a named pipe), I end up with a blank pdf.
This is what I am doing now (simplified):
mkfifo in_pipe.html out_pipe.pdf
./phantomjs rasterize.js in_pipe.html out_pipe.pdf
Then in another terminal:
echo '<center>hey!</center>' > in_pipe.html
cat out_pipe.pdf > out.pdf
The file out.pdf is created, but is blank. Am I missing something?
You can do what you're looking for very simply (it's just not really documented) directly in PhantomJS.
(May need to increase the timeout if you have images that need loading, etc.)
HTML comes in stdin, PDF binary goes out stdout. You can test it like:
echo "<b>test</b>" | phantomjs makepdf.js > test.pdf && open test.pdf