使用PhantomJS渲染图像的HTML

红塔兹

我正在尝试使用PhantomJS(版本1.9.7)从HTML文本创建PDF。我编写了一个非常简单的脚本(由于错误回调等因素而变得更加复杂)

phantom.onError = function(msg, trace) {
    var msgStack = ['PHANTOM ERROR: ' + msg];
    if (trace && trace.length) {
        msgStack.push('TRACE:');
        trace.forEach(function(t) {
            msgStack.push(' -> ' + (t.file || t.sourceURL) + ': ' + t.line + (t.function ? ' (in function ' + t.function + ')' : ''));
        });
    }
    system.stdout.write(msgStack.join('\n'));
    phantom.exit(1);
};

var page = require('webpage').create();
page.viewportSize = { width: 800, height: 600 };
page.paperSize = { format: 'A4', orientation: 'portrait', margin: '1cm' };
page.onResourceRequested = function(requestData, networkRequest) {
    console.log('Request (#' + requestData.id + '): ' + JSON.stringify(requestData));
};
page.onResourceReceived = function(response) {
    console.log('Response (#' + response.id + ', stage "' + response.stage + '"): ' + JSON.stringify(response));
};
page.onResourceError = function(resourceError) {
    console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
    console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
};
page.onError = function(msg, trace) {
    var msgStack = ['ERROR: ' + msg];
    if (trace && trace.length) {
        msgStack.push('TRACE:');
        trace.forEach(function(t) {
            msgStack.push(' -> ' + t.file + ': ' + t.line + (t.function ? ' (in function "' + t.function + '")' : ''));
        });
    }
    console.error(msgStack.join('\n'));
};

page.content = "<html><body><b>test</b><img src=\"http://www.google.co.uk/images/srpr/logo11w.png\" alt=\"\" border=\"0\" /></body></html>";
page.render('tmp.pdf');
setTimeout(function() {
    phantom.exit();
}, 5000);

我设置页面,将简单的HTML字符串分配给content属性,然后将其呈现为PDF。

该脚本不会产生任何输出。

我将问题缩小到<img>元素,将其删除后,将按预期生成PDF。从回调函数中我可以看到请求了图像,收到了响应,并且没有错误报告。我尝试渲染到PNG,但也不会产生任何输出。

我已经探讨了这是代理问题的可能性,但是raserize.js示例可以正常工作。

Cyber​​maxs

页面完全加载后,您必须调用render。请记住,通过page.open加载页面page.content始终是异步的。

将您的代码更改为此

page.content = "<html><body><b>test</b><img src=\"http://www.google.co.uk/images/srpr/logo11w.png\" alt=\"\" border=\"0\" /></body></html>";
setTimeout(function() {
    page.render('tmp.pdf');
    phantom.exit();
}, 5000);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用HTML渲染4000张图像?

来自分类Dev

我是否可以强制phantomjs使用背景图像和颜色来渲染pdf

来自分类Dev

使用base64在HTML上进行图像渲染?

来自分类Dev

在 WebView 中使用本地图像渲染本地 HTML 文件

来自分类Dev

使用QWebEngine渲染图像

来自分类Dev

无法在Poltergeist中使用PhantomJS渲染选项

来自分类Dev

使用Express html-pdf包时图像不是从动态图像路径渲染的

来自分类Dev

使用多线程渲染图像

来自分类Dev

无法使用VueJS渲染图像

来自分类Dev

图像无法使用KineticJS渲染

来自分类Dev

使用JS渲染EMF +图像

来自分类Dev

无法从HTML代码渲染的图像使用Laravel5.6 Blade {!! html_code !!}

来自分类Dev

PhantomJS不使用webfonts渲染屏幕截图吗?

来自分类Dev

为什么PhantomJS渲染页面使用window.setTimeout

来自分类Dev

使用phantomJS渲染pdf时消除边距

来自分类Dev

使用PhantomJS将多个页面渲染为pdf文件

来自分类Dev

在python中渲染图像以在html中显示

来自分类Dev

Firefox使用drawImage将SVG图像渲染到HTML5画布时出错

来自分类Dev

如何在使用 Golang 和 gin-gonic 动态创建的 HTML 中渲染/显示图像

来自分类Dev

phantomjs字体渲染问题

来自分类Dev

HTML Canvas在渲染图像中添加文本或图像

来自分类Dev

Django:如何使用模板渲染图像

来自分类Dev

使用Ajax从Wikipedia API渲染图像

来自分类Dev

使用OxyPlot从PlotModel渲染png图像

来自分类Dev

无法使用Webpack + React渲染大图像?

来自分类Dev

使用精灵表无法正确渲染图像

来自分类Dev

使用Hadoop的Blender静止图像渲染

来自分类Dev

如何使用 JS 渲染预加载的图像

来自分类Dev

使用叠加 Drupal 8 渲染图像

Related 相关文章

热门标签

归档