PhantomJS:pipe道input

我正在尝试使用PhantomJS来呈现一个HTML页面到PDF。 我不想将文件写入磁盘,我有内存中的HTML,我想在内存中的PDF。

在这个问题上使用Pooria Azimi的出色答案,我可以从命名pipe道获得pdf。 当在另一端尝试相同的时候(用命名pipe道replaceinput文件),我最终得到一个空白的pdf。

这就是我现在正在做的(简化):

mkfifo in_pipe.html out_pipe.pdf ./phantomjs rasterize.js in_pipe.html out_pipe.pdf 

然后在另一个terminal:

 echo '<center>hey!</center>' > in_pipe.html cat out_pipe.pdf > out.pdf 

文件out.pdf被创build,但是是空的。 我错过了什么吗?

Solutions Collecting From Web of "PhantomJS:pipe道input"

您可以直接在PhantomJS中直接执行您正在寻找的内容(这只是没有真正记录)。

 var page = require('webpage').create(), fs = require('fs'); page.viewportSize = { width: 600, height: 600 }; page.paperSize = { format: 'Letter', orientation: 'portrait', margin: '1cm' }; page.content = fs.read('/dev/stdin'); window.setTimeout(function() { page.render('/dev/stdout', { format: 'pdf' }); phantom.exit(); }, 1); 

(如果您有需要加载的图像,可能需要增加超时等)

HTML是标准输入,PDF二进制输出标准输出。 你可以像这样测试它:

echo "<b>test</b>" | phantomjs makepdf.js > test.pdf && open test.pdf