标签: html2canvas

html2canvas 删除多个空格和换行符

我正在使用 html2canvas 将 html 内容渲染为图像。但它仅支持单词之间的单个空格,并且所有文本仅支持在一个中显示。

Example 1

if text is  `Word1      Word2` it become to `word1 word2`

Example 2

This is First line 
This is Second Line 

Image: 

THis is First line This is Second Line
Run Code Online (Sandbox Code Playgroud)

我查看了 html2canvas 代码,我相信下面这两个函数负责绘制文本和空格。帮助我如何实现我的目标。

  function renderText(el, textNode, stack) {
    var ctx = stack.ctx,
    color = getCSS(el, "color"),
    textDecoration = getCSS(el, "textDecoration"),
    textAlign = getCSS(el, "textAlign"),
    metrics,
    textList,
    state = {
      node: textNode,
      textOffset: 0
    };

    if (Util.trimText(textNode.nodeValue).length > 0) {
      textNode.nodeValue = textTransform(textNode.nodeValue, getCSS(el, "textTransform")); …
Run Code Online (Sandbox Code Playgroud)

html javascript html2canvas

2
推荐指数
1
解决办法
6432
查看次数

如何使用 javascript/jquery 将 3 个画布 HTML 元素组合成 1 个图像文件?

我有 3 个画布,即 canvasTarget、canvasTarget2、canvasTarget3,如下所示:

        var canvas = document.getElementById("canvasTarget");
        var img = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
        var canvas2 = document.getElementById("canvasTarget2");
        var img2 = canvas2.toDataURL("image/png").replace("image/png", "image/octet-stream");
        var canvas3 = document.getElementById("canvasTarget3");
        var img3 = canvas3.toDataURL("image/png").replace("image/png", "image/octet-stream");
Run Code Online (Sandbox Code Playgroud)

我想将这些画布元素合二为一并下载为 JPEG 或 PDF 文件。我正在使用 /html2canvas.js 下载这个。任何立即回应将不胜感激。

javascript jquery canvas html5-canvas html2canvas

2
推荐指数
1
解决办法
1675
查看次数

如何将 iframe 转换为画布?

我正在尝试将所有内容作为图像保存到另一个页面中。

我已经探索了执行此操作的方法,因此我认为我需要首先将该页面转换为画布。

因此,我尝试使用要先将其保存为 iframe 的链接,然后将 iframe 转换为画布,但它不起作用。

$(document).ready(function(){

    var element = $("#html-content-holder"); // global variable
    var getCanvas; // global variable

    $("#btn-Preview-Image").on('click', function () {
        html2canvas(element, {
            onrendered: function (canvas) {
                $("#previewImage").append(canvas);
                getCanvas = canvas;
            }
        });
    });

    $("#btn-Convert-Html2Image").on('click', function () {
        var imgageData = getCanvas.toDataURL("image/png");
        // Now browser starts downloading it instead of just showing it
        var newData = imgageData.replace(/^data:image\/png/, "data:application/octet-stream");
        $("#btn-Convert-Html2Image").attr("download", "your_pic_name.png").attr("href", newData);
    });

});
Run Code Online (Sandbox Code Playgroud)
<script src="http://files.codepedia.info/uploads/iScripts/html2canvas.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<iframe id="html-content-holder" width="100%" height="100%" src="http://api.marketanyware.com/chartv2/engine/index.html?{bodyColor:%27#000000',api:{params:[{Stock:'SET',Period:'2hour',ChartList:{OHLC:true,EODHLine:true,EMA: [5, 10, 25, 50, 75, …
Run Code Online (Sandbox Code Playgroud)

html iframe canvas html2canvas

2
推荐指数
1
解决办法
2万
查看次数

如何使用html2Canvas自动下载截图

我有一个显示图形的画布,我正在尝试使用 html2canvas() 和以下代码截取画布的屏幕截图:

<div class="chartContainer" id="chart1"></div>
<div id="displayCanvas" style="display:none;" class="stx-dialog"></div>

html2canvas($('#chart1'),{onrendered:function(canvas1) 
{$('#displayCanvas').append(canvas1)}});
Run Code Online (Sandbox Code Playgroud)

在这里,当图表容器被加载时,它使用 id 为“displayCanvas”的 div 并附加画布的屏幕截图。

如何下载显示的画布的屏幕截图? 我已经尝试使用类似下面的东西来下载图像:

var link = document.createElement('a');
link.download = stx.chart.symbol+".png";
link.href = stx.chart.canvas.toDataURL("png");
link.click();
Run Code Online (Sandbox Code Playgroud)

但它只将画布上的数据下载为没有背景的图像(它不下载屏幕截图而只下载数据),下载后打开时会显示黑屏,其中包含数据。任何人都可以帮助我如何直接下载从 html2Canvas() 截取的屏幕截图的图像吗?

javascript html2canvas

2
推荐指数
2
解决办法
4394
查看次数

带有 html2canvas 的 aws s3 - 多个浏览器的 CORS 问题

我知道已经提出了很多问题和问题。但我找不到明确的答案来解决这个问题。

html2canvas用来截图我的页面 - 来自amazon s3(cloudfront,也是)

我尝试了几乎所有来自 SO 和 html2canvas 问题的答案。

我设置了我的 S3 CORS 以允许所有/还将我的存储桶设置为公共。我也给了所有人的所有公共访问权限(只是为了测试它是否有效。部署后我会阻止它们)

这是我的 s3 CORS

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)

还有我的桶政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:PutObject",
                "s3:PutObjectAcl",
                "s3:GetObject",
                "s3:GetObjectAcl",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::ubkorea/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

当我用 curl 向我的图像发送请求时,它有安静的正常响应Access-Control-Allow-Origin。下面是我的回复。

HTTP/1.1 200 OK
x-amz-id-2: 2v8iSfy/9yvLRe+CFiUqEjUz96IcRC86t1m7IBy1NDakkYIriumosvVYECeYgcPAcCW1axpwF00=
x-amz-request-id: 4ADD8456071CE5C3
Date: Fri, 13 …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-s3 cors html2canvas

2
推荐指数
1
解决办法
2406
查看次数

将隐藏的 DIV 保存为画布图像

我使用以下代码将可见图像保存为图像。

html2canvas(document.querySelector('.specific'), {
        onrendered: function(canvas) {
        theCanvas = canvas;
        Canvas2Image.saveAsPNG(canvas); 
    }
});
Run Code Online (Sandbox Code Playgroud)

有什么办法可以保存隐藏的

html javascript html5-canvas html2canvas

2
推荐指数
1
解决办法
4551
查看次数

html2canvas和jsPDF部分灰色部分

html2canvas我正在尝试使用和从 HTML 创建 PDF jsPDF。首先,我获取所有想要传递给 PDF 的 html 元素image,然后将它们一一添加,如下所示:

   var quality = 1
   var report1 = null
   var report2 = null
   var report3 = null
   var report4 = null
   var report5 = null
   var header = null

   html2canvas(document.querySelector('header'), {scale: quality})
        .then(canvas => {
            header = canvas
            html2canvas(document.querySelector('#report-1'), {scale: quality})
            .then(canvas => {
                report1 = canvas
                html2canvas(document.querySelector('#report-2'), {scale: quality})
                .then(canvas => {
                    report2 = canvas
                    html2canvas(document.querySelector('#report-3'), {scale: quality})
                        .then(canvas => {
                            report3 = canvas
                            html2canvas(document.querySelector('#report-4'), {scale: quality}) …
Run Code Online (Sandbox Code Playgroud)

background image html2canvas jspdf

2
推荐指数
1
解决办法
4530
查看次数

html2canvas 1.0.0-rc.5 2019 不支持圆角/边框半径(图像始终是矩形)?

我使用 html2canvas 2016 (0.5.0) 版本很长一段时间,因为它总是能很好地满足我的需要。现在我必须切换到当前版本,但我遇到了一些问题:

创建的图像不再有圆角。png 始终是矩形。现在我问自己是否做错了什么,或者这是否可能是当前版本的 html2canvas 中的一个错误?在将其作为“问题”发布到 GitHub 上之前,我想先在这里问一下。

2016 0.5.5版本的结果:https://i.stack.imgur.com/3IPcs.png(圆角)2019 1.0.0
版本 的结果: https: //i.stack.imgur.com /ba2JB.png(矩形角)

这是显示问题的 JSFiddle:https ://jsfiddle.net/ROPfiddle/jskLuw3v/3/

这是 html2canvas 的当前版本(1.0.0-rc.5): https: //html2canvas.hertzen.com/dist/html2canvas.js

这是我的CSS:

body {
  font-family: system-ui, Helvetica, Arial, sans-serif;
  margin: 19px 20px 0 20px;
  background-color: #000;
}
#wrapper {
  position: absolute;
  white-space: nowrap;
}
#badge {
  padding: 70px 67px 63px 71px;
  border: 13px solid #a6a6a6;
  border-radius: 110px;
  line-height: 1;
  background-color: #000;
  color: #fff;
}
.icon img {
  width: …
Run Code Online (Sandbox Code Playgroud)

javascript canvas html2canvas

2
推荐指数
1
解决办法
1284
查看次数

html2canvas捕获低质量图片

我正在尝试捕获一个带有画布的 div。它是一个 T 恤编辑器。现在我用 html2canvas 捕获这个 div,然后使用 jspdf 将其打印为 pdf。现在的问题是捕获的图像质量非常低并且模糊。它的 dpi 非常低。


这是原始的div图片:

原始div图片


这是该 div 的打印版本:

该 div 的打印版本


您可以看到它们之间的质量差异是巨大的。

无论如何,这是捕获 div 然后将其转换为 pdf 的代码

var myimage;
function print() {
    window.scrollTo(0, 0);
    html2canvas(document.getElementById('shirtDiv')).then(function(canvas) {
        myimage = canvas.toDataURL("image/jpeg");
        setTimeout(print2, 1);
        var doc = new jsPDF();
        doc.addImage(myimage, 'JPEG', 35, 20, 130, 155);
        doc.save('Test.pdf');
    });
}



                <div id="shirtDiv" class="page" style="width: 530px; height: 630px; position: relative; background-color: rgb(255, 255, 255); " >
                    <img name="tshirtview" id="tshirtFacing" src="img/crew_front.png">
                    <div id="drawingArea" style="position: absolute;top: 100px;left: 160px;z-index: 10;width: 200px;height: 400px;">
        </div></div>
Run Code Online (Sandbox Code Playgroud)

请忽略在线CSS

javascript jquery fabricjs html2canvas jspdf

2
推荐指数
1
解决办法
6078
查看次数

如何解决错误:文档未附加到窗口?

我使用html2canvas将 html 转换为 png,出现以下错误:

html2canvas.min.js:20 Uncaught (in promise) Error: Document is not attached to a Window
    at html2canvas.min.js:20:193237
    at html2canvas.min.js:20:1976
    at Object.next (html2canvas.min.js:20:2081)
    at html2canvas.min.js:20:1023
    at new Promise (<anonymous>)
    at a (html2canvas.min.js:20:774)
    at Vs (html2canvas.min.js:20:192912)
    at html2canvas.min.js:20:196186
    at takeScreenShot (set style [modal].html:94:7)
    at action (set style [modal].html:68:11)
Run Code Online (Sandbox Code Playgroud)
 let htmlString = document.documentElement.innerHTML;
 let virtualDom = new DOMParser().parseFromString(htmlString, "text/html");
 html2canvas(virtualDom.body).then((canvas) => {
       let base64image = canvas.toDataURL("image/png");
      });
Run Code Online (Sandbox Code Playgroud)

如果我传递浏览器 DOM 就可以了,但由于某种原因我需要新的 DOM,这就是我使用DOMParser. 类似问题:链接

javascript html5-canvas html2canvas

2
推荐指数
1
解决办法
1664
查看次数