首页 > 其他分享 >html2canvas图片跨域问题

html2canvas图片跨域问题

时间:2024-09-30 15:14:20浏览次数:7  
标签:const 跨域 url 打印 html2canvas link data 图片

需求:

页面有个弹窗,弹窗内部有网站logo、表格、第三方的图片等内容,点击打印按钮,将弹窗区域内容下载至本地

安装依赖

pnpm add html2canvas

引入

import html2canvas from 'html2canvas'

使用

<template>
  ...
  <button @click="handlePrint()">打印</button>
</template>

<script setup>
  const handlePrint = ()=>{
    html2canvas(dom).then(canvas => {
		const link = document.createElement("a");
		link.download = `screenshot.png`;
		link.href = canvas.toDataURL("image/png");
		link.click();
	});
  }
</script>
  

打印过程中遇到问题

问题一: logo区域为空白

查阅html2canvas配置文档后增加useCORS: true,logo可以正常打印, 代码如下:

html2canvas(dom, {
		useCORS: true,
}).then(canvas => {
		const link = document.createElement("a");
		link.download = `${props.returnForm.aftersaleSn}.png`;
		link.href = canvas.toDataURL("image/png");
		link.click();
});

问题二: 第三方图片无法打印

按上述修改后,虽logo(存放阿里云)可以打印,但另一个第三方平台的仍然无法打印,控制台报跨域问题,但无论如何设置,比如:useCORS: true、给images标签增加【crossorigin="anonymous"】,都无法避免,也没有第三方的权限,无法设置 CORS,所以只能想办法如何能够跳过跨域

方案: 请求到资源后,将图片转为base64格式,代码如下:

标签:const,跨域,url,打印,html2canvas,link,data,图片
From: https://www.cnblogs.com/ssunshine/p/18441877

相关文章

  • 修改图片的DPI为300,图片格式转换成jpg,nodejs脚本
    //用sharp转换图片格式constSharp=require('sharp');//引入fs库用于文件操作constfs=require('fs');//引入path库用于处理文件路径constpath=require('path');//引入exiftool库用于处理图片元数据constexiftool=require('exiftool-vendored').exifto......
  • YOLOv8训练损失、mAP画图功能 | 支持多结果对比,多结果绘在一个图片(科研必备)
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)YOLOv8训练损失、mAP画图功能|支持多结果对比,多结果绘在一个图片(科研必备)......
  • pbootcms如何限制后台图片上传大小
    在PbootCMS中,如果需要限制后台上传图片或附件的大小,可以通过多种方式进行修改。以下是详细的步骤和方法。修改方法1.修改 mylayui.js 文件定位文件找到 apps/admin/view/default/js/mylayui.js 文件。增加限制在执行单图上传实例中增加限制://增加红色一......
  • 小麦病虫害分类数据集。包健康小麦在内12个不同类型的小麦病害图片作为数据集数据集共
     小麦病虫害分类数据集。包括健康小麦在内的12个不同类型的小麦病害图片作为数据集数据集共由近7000张较为明显的小麦病害特写图构成,根据不同病害种类划分为包括健康小麦在内的12类国内常见的小麦病害,分别为:根冠腐烂(CrownandRootRot)、叶锈病(LeafRust)、小麦散斑,又名小麦......
  • 轻松PIL批处理图片像素
    废话少说,上代码!fromPILimportImageimportostarget_folder='target'#保存的目录ifnotos.path.exists(target_folder):os.makedirs(target_folder)imgs_path='./imgs'#图片所在目录forfilenameinos.listdir(imgs_path):print("需要......
  • 影刀RPA之接入草料二维码实现自动生成标签图片与打印
    如果您还不认识(影刀RPA)这个宝藏应用强烈建议您阅读这篇文章(影刀RPA之我对这个宝藏应用的见解) 运行的流程和调用的解释说明:其实这个是通过调用草料二维码官方的接口来实现批量生成图片的,然后生成的图片在本地的文件夹内。生成图片的代码可以参考(对接草料二维码批量生成标签......
  • [GAN][图片异常检测]Unsupervised Anomaly Detection withGenerative Adversarial Net
    论文背景与目标:    本文旨在将GAN运用到图片异常检测中,并取得了一定的效果,该模型不仅能够检测已知的异常,还能够发现未曾标注的新异常。提出了结合GAN的生成和判别功能的新型异常评分方法。在无监督的前提下实现了异常图像的分割。通过利用GAN的潜在空间,提出了新的......
  • pbootcms的图片裁剪确保无论图片是横图还是竖图,都能居中裁剪
    解决方案找到裁剪缩略图的方法:文件位置:/core/function/file.php搜索:functioncut_img,大约在447行优化cut_img方法:实现居中裁剪功能优化代码以下是优化后的cut_img函数代码://剪切图片functioncut_img($src_image,$out_image=null,int$new_width=null,......
  • PbootCMS文章列表没有缩略图时也不显示默认图片
    在PBootCMS中,如果列表使用了缩略图显示,默认情况下即使没有上传缩略图也会显示默认图片。为了实现只有在上传了缩略图时才显示图片,可以使用PBootCMS自带的缩略图返回值进行判断。以下是如何实现这一功能的具体代码示例:示例代码假设您有一个列表模板,需要判断是否有缩略图才显......
  • matlab-对比两张图片的Ycbcr分量的差值并形成直方图
    %对比两张图片的Ycbcr分量的差值并形成直方图,改个路径就能用,图片分辨率要一致closeall;clearall;clc;I1=imread('E:\test\resources\image\1.jpg');I2=imread('E:\test\resources\image\2.jpg');ycbcr1=rgb2ycbcr(I1);ycbcr2=rgb2ycbcr(I2);%提取色度分量,Y(亮......