php手写签名保存,PHP+JS实现PC端+移动端PDF手写签名合并
PHP+JS实现PC端+移动端PDF手写签名合并
1年前
阅读 3029
评论 0
喜欢 0
前端插件:`jSignature.js`
PHP插件:`FPDF+FPDI`
`index.html`代码:
```html
测试PDF手写签名
html,body{padding: 0;margin: 0;width: 414px;overflow: hidden}
input {
padding: .5em;
margin: .5em;
}
select {
padding: .5em;
margin: .5em;
}
#signatureparent {
color:#000;
padding:20px;
}
/*This is the div within which the signature canvas is fitted*/
#signature {
border: 1px solid #eee;
background-color:#fff;
}
/* Drawing the 'gripper' for touch-enabled devices */
html.touch #content {
float:left;
width:92%;
}
html.touch #scrollgrabber {
float:right;
width:4%;
margin-right:2%;
background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAFCAAAAACh79lDAAAAAXNSR0IArs4c6QAAABJJREFUCB1jmMmQxjCT4T/DfwAPLgOXlrt3IwAAAABJRU5ErkJggg==)
}
html.borderradius #scrollgrabber {
border-radius: 1em;
}
同意签授
jQuery.noConflict()
(function($){
$(document).ready(function() {
var $sigdiv = $("#signature").jSignature({'UndoButton':true})
, $extraarea = $('#displayarea')
, pubsubprefix = 'jSignature.demo.'
// 提交给后端保存
$('#check').bind('click', function(e){
var base64 = $("#signature").jSignature("getData");
$.ajax({
type: 'post',
data:{'base64':base64},
url: "php/savePdf.php",
success: function(data) {
//var array = eval('('+data+')');
alert(data);
}
});
});
})
})(jQuery)
```
`savePdf.php`代码:
```php
error_reporting (E_ALL);
$root = dirname(dirname(__FILE__));
require_once($root.'/vendor/fpdf/fpdf.php');
require_once($root.'/vendor/fpdi/fpdi.php');
require_once($root.'/vendor/function.php');
# 1、保存图片
$path = $root.'/public/data/';
$img = $_POST['base64'];// 前端将图片转base64传递过来的参数
$img = str_replace('data:image/png;base64,', '', $img);// 得将头信息删除掉
$img = str_replace(' ', '+', $img);// 再把空替换成+号
$data = base64_decode($img);// 执行base64序列号
# 生成唯一文件名
$file_name = uniqid().'.png';
$img_path = $path.'img/'.$file_name;
# 保存到本地
$success = file_put_contents($img_path, $data);
# 2、圖片太大了等比例縮放
zipImg($img_path);
# 3、PDF合并图片成新的PDF
$file = $path.'pdf/';
$pdf_file = $root.'/public/pdf/test.pdf';
$pdf = new FPDI();
$pageCount = $pdf->setSourceFile($pdf_file);
for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++)
{
$templateId = $pdf->importPage($pageNo);
$size = $pdf->getTemplateSize($templateId);
if ($size['w'] > $size['h']) $pdf->AddPage('L', array($size['w'], $size['h']));
else $pdf->AddPage('P', array($size['w'], $size['h']));
$pdf->useTemplate($templateId);
if($pageNo==$pageCount){
// 00表示原尺寸寫入
$pdf->Image($img_path, 70, 250, 0, 0);
}
}
$pdf->Output($file.time().'.pdf', 'F');
```
源码下载地址:[点击下载](https://blog.junphp.com/github/PHP实现PDF手签.zip "点击下载")
© 著作权归作者所有
php手写签名保存,PHP+JS实现PC端+移动端PDF手写签名合并相关推荐
- 天刀论剑显示服务器,天涯明月刀手游论剑机制大改革 论剑pc与移动端分开匹配...
2月25日,即元宵节前夕,天涯明月刀手游迎来了元宵节版本更新,涉及竞技.玩法.节日活动以及商城外观等海量内容,都已在凌晨更新维护完成后,上线正式服. 公告显示,在新版本更新完成后,玩家登录游戏,还可领 ...
- 小手一敲,让JS Map现原形
一.前言 文章主要讲JS Map对象的用法和如何手写Map,非常适合初步学习了JS的同学,适当的学会手写JS源码的技能,对JS理解和面试都有很大的帮助.大多数人都知道Map方法的使用,但是在网上对Ma ...
- node.js服务端笔记文档学会写接口,学习分类:path、包、模块化、fs、express、中间件、jwt、开发模式、cors。
node.js 学习笔记 node.js服务端笔记文档学会写接口,path.包.模块化.fs.express.中间件.JWT.开发模式.cors. gitee:代码接口笔记 1什么是node.js n ...
- 【瑞数】维普期刊JS逆向4000字详细流程_1_获取接口签名
文章目录 前言 过debugger 定时器debugger 死循环debugger 分析搜索接口 签名在何处生成? 中场休息 签名代码来源分析 签名代码在何处加载到内存? 注入代码 设置签名为全局变量 ...
- php滑动拼图验证,JS实现PC手机端和嵌入式滑动拼图验证码三种效果
PC和手机端网站滑动拼图验证码效果源码,同时包涵了弹出式Demo,使用ajax形式提交二次验证码所需的验证结果值,嵌入式Demo,使用表单形式提交二次验证所需的验证结果值,移动端手动实现弹出式Demo ...
- Eclipse保存验证JS缓慢
EclipseSave保存js文件的时候验证JS的时间很长( 使用extjs).Eclipse – Validation – JavaScript Validator 的 Manual和Build都没 ...
- 手写公式识别 :基于深度学习的端到端方法
本文简要介绍2018年5月被TMM录用论文"Track,Attend and Parse (TAP): An End-to-end Framework for Online Handwrit ...
- php 手机端播放器,用JS代码适配电脑端和手机端播放器代码
用JS代码适配电脑端和手机端播放器代码 蓝叶 网站设计 2016-08-10 10668 9评论 随着html5的崛起,很多网站都采用html5代码来设计,让网站美观大气,但是 ...
- php 鼠标 移动 手型,JS实现的鼠标跟随代码(卡通手型点击效果)
这篇文章主要介绍了JS实现的鼠标跟随代码,带有卡通手型点击效果.涉及JavaScript鼠标事件的响应与页面元素的动态调用技巧,需要的朋友可以参考下,具体如下: 一个跟随鼠标的小手效果,鼠标移在哪里, ...
最新文章
- vs2010配置python_VS2010下python3的配置
- Redisson 管道批量发送命令流程分析
- SSH框架整合遇到的错误——org.springframework.beans.NotWritablePropertyException:
- The hierarchy of the type UserOperateLogAdvisor is inconsistent
- x3-02 java_Day13 -- Java流程控制02
- vue可编辑div_Vue实现MakeDown编辑器
- rocketmq4.x快速入门指南
- python求小于n的所有素数_关于求N以内素数的python实现以及优化方法
- spring相关记录
- 【超级鼠标键盘锁】之HOOK钩子屏蔽鼠标和Ctrl+Alt+Del、Win+L之外的按键
- win10用android手柄游戏手柄,win10系统使用游戏手柄的步骤
- 一个在线文字转语音工具
- 【上班摸鱼系列】文字选择类游戏:《职员默示录 - 启》末日丧尸爆发,你,是什么下场!?
- 汉语拼音分音节的程序
- java简述什么是事务_java什么是事务意思概念
- 【渝粤教育】国家开放大学2018年秋季 1318T社会统计学 参考试题
- Express 报错:Failed to lookup view error in views directory 处理
- 学习笔记:C++进阶【继承、多态、二叉树进阶、map和set、哈希、C++11、异常、智能指针、特殊类设计、C++的类型转换】
- java实现“两数之和”
- 论文数据获取工具——WebPlotDigitizer