mad*_*ads 15 linux pipe named-pipes mkfifo phantomjs
我正在尝试使用PhantomJS将html页面呈现为pdf.我不想把文件写到磁盘上,我在内存中有html,我想在内存中使用pdf.
在这个问题上使用Pooria Azimi的优秀答案,我能够从命名管道中获取pdf.当在另一端尝试相同(用命名管道替换输入文件)时,我最终得到一个空白的pdf.
这就是我现在正在做的事情(简化):
mkfifo in_pipe.html out_pipe.pdf
./phantomjs rasterize.js in_pipe.html out_pipe.pdf
Run Code Online (Sandbox Code Playgroud)
然后在另一个终端:
echo '<center>hey!</center>' > in_pipe.html
cat out_pipe.pdf > out.pdf
Run Code Online (Sandbox Code Playgroud)
文件out.pdf已创建,但为空.我错过了什么吗?
phi*_*reo 31
您可以直接在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);
Run Code Online (Sandbox Code Playgroud)
(如果您有需要加载的图像,可能需要增加超时等)
HTML来自stdin,PDF二进制文件stdout.你可以测试它:
echo "<b>test</b>" | phantomjs makepdf.js > test.pdf && open test.pdf