Javascript PhantomJS将HTML转换为JPEG:图像被切断
我正在尝试使用phantomjs将HTML页面转换为JPEG,并且底部的输出图像被切断(图像不显示完整的HTML页面) 幻影 这是我的代码,用于Javascript PhantomJS将HTML转换为JPEG:图像被切断,javascript,html,svg,phantomjs,jointjs,Javascript,Html,Svg,Phantomjs,Jointjs,我正在尝试使用phantomjs将HTML页面转换为JPEG,并且底部的输出图像被切断(图像不显示完整的HTML页面) 幻影 这是我的代码,用于光栅化.js var page = require('webpage').create(), system = require('system'), address, output, size; address = system.args[1]; output = system.args[2]; page.op
光栅化.js
var page = require('webpage').create(),
system = require('system'),
address, output, size;
address = system.args[1];
output = system.args[2];
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
phantom.exit(1);
} else {
window.setTimeout(function () {
page.render(output);
phantom.exit();
}, 200);
}
});
我按如下方式运行:
phantomjs ./rasterize.js ./test.html ./test.jpg
HTML
我试图导出的HTML页面使用了将SVG绘制到页面的方法,因此它包含一个
标记以及
标记,然后添加一些普通的
,
等标记
以下是HTML页面中的一些示例:
...
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="v-2" width="3100" height="1101" visibility="shown">
<defs id="v-4">
<linearGradient id="linearGradientv-2-107112646">
<stop offset="0%" stop-color="rgb(228,234,243)" stop-opacity="1"/>
<stop offset="60%" stop-color="rgb(201,212,231)" stop-opacity="1"/>
</linearGradient>
...
<g id="j_1" model-id="86b320b6-0e8a-4dee-8258-e329b97c04ea" class="element custom Device" magnet="false" fill="#FFFFFF" stroke="none" transform="translate(50,100)">
<g class="rotatable" id="v-6" transform="rotate(0,150,20)">
<g class="scalable" id="v-47" transform="scale(2,0.16)">
<rect class="body" id="v-13" fill="url(#linearGradientv-2-107112646)" width="150" height="250" stroke="black"/>
</g>
...
</svg>
。。。
...
...
在浏览器中查看输入HTML页面时,整个页面都在视图中/HTML页面中没有任何内容被切断
形象
结果图像显示了HTML页面中的
,但它被切断了!整张桌子都应该显示。它应该上升到“e”,而不是切断其中一个“d”行。在实际的HTML页面(在浏览器中查看)中,表格正确显示并上升到“e”:
有人知道为什么我的图像被切断了吗?好吧,结果是jointJS问题,而不是幻影问题对于那些可能发现此问题的人,我仍将发布解决方案 当用户移动或创建元素时,可以在画布外创建该元素。所以我听“鼠标指针向上”事件并检查它是否离开画布。如果禁用,则展开画布。JointJS代码现在如下所示:
paper.on('cell:pointerup', function(cellView, evt, x, y) {
if(x>(paper.options.width-150))
{
paper.setDimensions((paper.options.width+200),paper.options.height);
}else if(y>paper.options.height)
{
paper.setDimensions(paper.options.width,(paper.options.height+200));
}
});
你能提供一个全页的样本来做实验吗?另外,PhantomJS是什么版本?