php在线图片签名,ElementUi+Vue+Php+fpdf+fpdi 实现文档在线签订(图片水印、手写签名)...
先上效果
运用到的技术vue-pdf
setasign/fpdf
setasign/fpdi
vue-esign
前端实现
pdf封装
v-for="i in numPages"
:key="i"
:src="src"
:page="i"
style="display: block; width: 100%; border-bottom: 1px solid;"
class="pdf-page"
>
import pdf from "vue-pdf";
export default {
props: ['url'],
components: {
},
data() {
return {
src: "",
numPages: undefined
};
},
watch: {
numPages: function(){
this.$nextTick(() => {
console.log('success')
})
}
},
mounted() {
this.src = pdf.createLoadingTask(this.url);
this.src.promise.then(pdf => {
this.numPages = pdf.numPages;
this.$emit('closeLoadding', false)
});
}
};
使用 + 签名
{{ title }}
contact No: {{ trno }}
签字: 请在下面进行签字
ref="signature"
:width="800"
:height="230"
:isCrop="isCrop"
:lineWidth="lineWidth"
:lineColor="lineColor"
:bgColor.sync="bgColor"
/>
清除
确认
import vueEsign from "vue-esign";
import { Message } from 'element-ui';
import { contractSign } from "@/api/web";
import Pdf from "@/components/Pdf/Index"
export default {
components: { Pdf, vueEsign },
props: ['showNext', 'contract_pdf_url'],
data() {
return {
title: "Talk 100",
trno: "TRCN-0007776669",
src: null,
numPages: 6,
isCrop: false,
positionX: 0,
positionY: 0,
lineColor: "#000000",
bgColor: "",
lineWidth: 6,
signatureImg: "",
loadding: true
};
},
methods: {
confirm() {
this.$refs.signature
.generate()
.then(res => {
this.signatureImg = res
this.$refs.signature.reset();
this.$emit('update:showNext', 1)
})
.catch(err => {
Message.error(err)
});
},
restore() {
this.$refs.signature.reset();
this.showNext = false
},
savePdf() {
return new Promise((resolve) => {
contractSign({sign: localStorage.getItem('sign'), img: this.signatureImg}).then( r => {
if( r.code == 200) {
resolve()
}
})
})
},
/**
* 控制整个页面的显示
*/
closeLoadding(isShowLoadding) {
this.loadding = isShowLoadding
}
}
};
html {
font-size: 20px;
}
body {
font-size: 16px;
}
.header {
h2 {
width: 100%;
text-align: center;
}
.no {
float: right;
margin-right: 2rem;
clear: both;
}
.prompt {
color: #33363b;
}
}
.pdfContainer {
.pdf {
position: relative;
margin-top: 3rem;
margin-left: 20%;
span {
display: block;
width: 60% !important;
left: 5rem;
}
img {
width: 400px;
height: 120px;
position: absolute;
right: 150px;
bottom: 50px;
}
}
.signature {
border: 1px solid springgreen;
width: 80%;
margin: 0px auto;
canvas {
width: 100%;
}
.el-divider--horizontal{
margin: 24px 0 0 0;
}
}
}
前端主要进行pdf渲染到页面中,然后我们通过组件vue-esign得到一个签字画版,当签字确认后,我们可以通过方法generate()来得到一张签名图,由此我们将图片添加dom节点导pdf中
同时进行将图片传递给后端
后端实现
核心方法如下public function contractPdf($sign_img, $user_id, $app_id)
{
# 处理上传的图片
# 企业合同地址
$train = (new CorpService())->getTrain($app_id, $user_id);
$pdf_path = $this->createContractPdf(Arr::get($train, 'contract_path'));
$file = str_replace('data:image/png;base64,', '', $sign_img);
$file = base64_decode($file);
$filename = storage_path("temp/" . Str::random(40) . '.' . "png");
file_put_contents($filename, $file);
# 保存pdf
$pdf = new Fpdi();
$pageCount = $pdf->setSourceFile($pdf_path);
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++){
$templateId = $pdf->importPage($pageNo);
$size = $pdf->getTemplateSize($templateId);
if ($size['width'] > $size['height']){
$pdf->AddPage('L', array($size['width'], $size['height']));
}else {
$pdf->AddPage('P', array($size['width'], $size['height']));
}
$pdf->useTemplate($templateId);
if($pageNo == $pageCount) {
$w = $size['width']/5;
$h = $size['height']/5;
$center_x = $w * 3.5; $center_y = $h * 4;
$pdf->image($filename, $center_x, $center_y, 80);//中间水印
}
}
$end_path = "contract/$user_id.pdf";
$pdf->Output('F',storage_path("$end_path"),false);
# 删除临时文件
Storage::delete($filename);
return $end_path;
}
将签字后的图片进行保存写入pdf中,完成整个操作链
本文由 邓尘锋 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Mar 22, 2021 at 04:47 pm
php在线图片签名,ElementUi+Vue+Php+fpdf+fpdi 实现文档在线签订(图片水印、手写签名)...相关推荐
- java imageio删除图片_Java 提取、替换、删除PDF文档中的图片
在一篇文章里,配有与文本信息相得益彰的图片,不仅能够活跃与美化版面,同时也有利于提高文章的可读性和阅读效果,从而增强其吸引力.同时,对文档中已存在图片的处理也尤为重要.本文将通过使用Java程序来演示 ...
- python批量读取图片并复制入word_提取出 Word 文档里的图片 并利用 python 批量转换格式...
日常工作中,你是否遇到过这样的场景,领导发来一份 Word 文档,要求你将文档中的图片存储到一个文件夹内,并且还要将图片都改成 .jpg 或者 .png,你会怎么办?你是不是一边内心崩溃,一边开始一张 ...
- Word文档怎样添加图片?技巧分享!怎么在Word文档中加入图片?
我们经常会在生活中工作中使用word文档来编辑一些文本信息,从而记录一些文字内容,我们在使用word文档来编辑文字信息的时候,感觉都是文字内容太过于单调,我们想要在文档中添加图片,那么究竟该如何操作呢 ...
- python下载图片到文件夹_python实现解析markdown文档中的图片,并且保存到本地~
背景 前阵子简书好像说是凉了,搞得我有点小慌,毕竟我的大部分博客都是放在简书上面的,虽然简书提供了打包导出功能,但是只能导出文字,图片的话还是存在简书服务器上面,再加上我一直想要重新做一个个人博客,于 ...
- python pdf 图片_第一节:python提取PDF文档中的图片
1.安装第三方类库pymupdf:pip install pymupdf 2.安装完成后直接上代码,代码如下: import fitz import time import re import os ...
- java word导出图片格式_用java怎么将word文档转成图片格式
展开全部 使用 java 操作 openoffice 实现格式转换 辛苦了几天. 不敢独享成果 首先,要安装 openoffice (废话- -) 创建JAVA项目的时候 需要323131333532 ...
- php手写签名保存,PHP+JS实现PC端+移动端PDF手写签名合并
PHP+JS实现PC端+移动端PDF手写签名合并 1年前 阅读 3029 评论 0 喜欢 0 前端插件:`jSignature.js` PHP插件:`FPDF+FPDI` `index.html`代码 ...
- WPS文档怎样转换为图片
文件转换操作不论是在日常生活中还是工作学习当中都会遇见.因此文件转换已经成为了基础操作,是大家都应该学习掌握的操作.为此今天小编将教给大家其中的一个转换技巧,那就是WPS转图片. 使用工具:迅捷PDF ...
- office文档在线预览工具平台选型
在线预览原理 文档在线预览说明: 1.业务系统生成文档浏览地址,用户通过终端进行访 2.用户终端访问文档预览资源地址,请求文档解析器,解析器分为私有云和公有云部署,作用是将文档进行解析成x ...
- Android 将签名布局旋转90度,Android 自定义View手写签名
Android 自定义View:手写签名 最近项目中有个新的需求,就是要实现用户手写签名,然后展示再上传到服务器.看到效果图后,先是面对百度编程搜了一下,很多实现方法,主要就是自定义View实现的,为 ...
最新文章
- Paddle 环境中 使用LeNet在MNIST数据集实现图像分类
- 存储引擎:MySQL系列之七
- UIImage常用的分类
- 20155301实验三 免杀原理与实践
- mysql中,一条select语句是如何执行的?
- 记一起因证书引发的支付宝支付异步通知接收不到的事故
- 如何用append连接html文件,jquery append()怎么用?
- getTime()的00:00:00问题。
- 云服务器的规格配置该怎么选?
- matlab计算一组数的函数值_「数学建模」MATLAB的数值计算
- JavaScript实现解析xml文件数据
- 中国3月份采购经理人指数回升
- 你知道甲醛的危害有多大吗?
- 全国城市API(精确到县级)JSON数据
- html边框颜色不显示,关于html:Firefox中边框颜色显示不正确
- Spring Bean生命周期过程
- 等比数列等差数列求和
- 文献管理软件Mendeley最新使用指南看这里!
- 最大/最小费用流(板子整理)
- Ubuntu_在Ubuntu 12.04 中安装iTunes
热门文章
- ubuntu16.04中 vim8 backspace键删除功能失效
- NVIDIA详细解读游戏中DX9与DX11差别
- CHM格式 打开后不显示内容的解决办法
- Mathematica图片裁切
- 采集用python还是火车头_我才知道爬虫也可以酱紫--火车采集器
- RabbitMQ报错 o.s.a.r.c.CachingConnectionFactory : Channel shutdown: channel error; protocol meth
- 苹果手机linux系统版本号,Linux下查看系统版本号信息的方法(转)
- vivado error:Multiple declarations of unsigned included via multiple use clauses
- 木讷的程序员需要知道的事情(一)
- 转:[Server] 在 Windows 上安裝 PHP 5.3 開發環境