Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用nodejs实现html2canvas的类似解决方案_Html_Css_Node.js_Html2canvas - Fatal编程技术网

使用nodejs实现html2canvas的类似解决方案

使用nodejs实现html2canvas的类似解决方案,html,css,node.js,html2canvas,Html,Css,Node.js,Html2canvas,我正在使用css、jquery和nodejs(带有ejs和express)创建一个网站,我需要将带有一些文本的div和带有背景图像的div导出为图像(jpg或png),但最好是pdf。我试图使用html2canvas,但后来我发现它与nodejs不兼容。 我也尝试使用jspdf,但它没有在pdf文件中导出css。 所以我想知道是否有人知道一个可以用nodejs实现的解决方案 以下是我的ejs代码示例: <%for(var j = 0; j < rawData.scanner.leng

我正在使用css、jquery和nodejs(带有ejs和express)创建一个网站,我需要将带有一些文本的div和带有背景图像的div导出为图像(jpg或png),但最好是pdf。我试图使用html2canvas,但后来我发现它与nodejs不兼容。 我也尝试使用jspdf,但它没有在pdf文件中导出css。 所以我想知道是否有人知道一个可以用nodejs实现的解决方案

以下是我的ejs代码示例:

<%for(var j = 0; j < rawData.scanner.length; ++j) {%>
<div class="grid" id="grid-<%= data.scanner[j].camera%>" 
    style="
    width : <%= parseFloat(data.widthScreen) + 17%>px; 
    height : <%= parseFloat(data.heightScreen) + 17%>px; 
    position : absolute;
    left : 0px;
    top : 60px;
    overflow-x : scroll;
    overflow-y : scroll;
    display : none;">
    <%for(var i = 0; i < data.scanner[j].parts; ++i) {%>
    <div class="fenetre" id=<%= data.scanner[j].name + "-img" + i%>
        style="
        background-image : url(<%= (data.scanner[j].imagePath)%>);
        width : <%= data.scanner[j].width%>px; 
        height : <%= data.scanner[j].height%>px; 
        position:absolute; 
        top: 0px; 
        left: <%= (i * data.scanner[j].left)%>px;"
    >
    </div>
    <%}%>
</div>
<%}%>

试试看,它以pdf文件的形式导出css,它也是一个npm包,因此它将与nodejs兼容

安装:

$npm安装-g html pdf

命令行示例:

var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('./test/businesscard.html', 'utf8');
var options = { format: 'Letter' };

pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
  if (err) return console.log(err);
  console.log(res); // { filename: '/app/businesscard.pdf' } 
});
$html pdf test/businesscard.html businesscard.pdf

代码示例:

var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('./test/businesscard.html', 'utf8');
var options = { format: 'Letter' };

pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
  if (err) return console.log(err);
  console.log(res); // { filename: '/app/businesscard.pdf' } 
});

我知道这个问题很老,但最近我想试试


另请参见

谢谢您的awnser。不幸的是,我使用的是ejs,所以我没有任何可以读取的.html文件。你还有别的解决办法吗?(即使它是jpg或png而不是pdf,我也要它)你能给我举一个你的
div
images
&
css
的例子吗?我编辑了这个问题。我没有.css文件,css是内联的。您只需将htlm&css添加到
html
变量中即可。var html='您的html代码'它确实帮助我将html转换为PDF文件。否则,我们可以将HTML添加到变量中,并将其传递到pdf.cratet()中