我正在尝试使用PhantomJS将html页面呈现为pdf。我不想将文件写入磁盘,内存中有html,并且内存中需要pdf。
使用从Pooria阿芝米的出色答卷,在这个问题,我能够从命名管道获取PDF。当另一端尝试相同时(用命名管道替换输入文件),我最终得到一个空白的pdf。
这就是我现在正在做的(简体):
mkfifo in_pipe.html out_pipe.pdf ./phantomjs rasterize.js in_pipe.html out_pipe.pdf
然后在另一个终端:
echo '<center>hey!</center>' > in_pipe.html cat out_pipe.pdf > out.pdf
文件out.pdf已创建,但为空白。我想念什么吗?
您可以直接在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