精华内容
下载资源
问答
  • 我们日常办公时,会经常对PDF文件进行签名操作,那么如何更快更高效的添加手写签名呢? 方法一: WPS2019中打开一个需要签名的PDF文件窗口上方菜单栏【插入】中选择【PDF签名】,届时我们可以通过三种方式...

    我们在日常办公时,会经常对PDF文件进行签名操作,那么如何更快更高效的添加手写签名呢?

    方法一:

    1. 在WPS2019中打开一个需要签名的PDF文件,在窗口上方菜单栏【插入】中选择【PDF签名】,届时我们可以通过三种方式创建签名:输入不同字体的文字、导入准备好的签名图片或者手写签名。这里以较常见的手写签名为例;
    2. 想要创建一个原笔迹手写签名,电脑需要连接一个电子签名板,这里用到绘王HST640签名板,其利用电磁感应技术原理实现原笔迹输入。在弹出的签名窗口,用专业压感笔签名后,点击【确定】即可获得签名;
    3. 在需要签名的位置上单击鼠标左键,签名便插入成功,可以通过放大缩小,调成合适的尺寸。

    方法二:

    1. HST640数位板连好电脑后,将需要插入签名的PDF文件,用Microsoft office 2019打开。点击菜单栏中的【审阅】-【开始墨迹书写】,即可开始签名。
    2. 通过数位板搭配数位笔,可以获得签名者真实原笔迹,签名效果如下图所示:

    如今,更多的行业选择用电子签名代替传统纸笔签名,一方面是文件流转更快捷高效;另一方面,电子签名具备签署身份可识别、签署内容防篡改等特性,因而能够改善传统纸质合同签署过程带来的伪造、丢失、破损等不足。

     

     

     

     

    展开全文
  • C#下对PDF文件进行电子图片签名

    千次阅读 2018-02-07 11:40:49
    能够对pdf进行图片签名的,网上找来找去,就一个iText是免费的,但这个免费是AGPL协议,当然它也有商业协议,iText现在有5和7两个版本,这里我采用的是版本5,nuget下载地址为:...然后为了多做比较,我这里还找了Spire...
    能够对pdf进行图片签名的,网上找来找去,就一个iText是免费的,但这个免费是AGPL协议,当然它也有商业协议,iText现在有5和7两个版本,这里我采用的是版本5,nuget下载地址为:https://www.nuget.org/packages/iTextSharp/,然后为了多做比较,我这里还找了Spire.PDF进行测试,其免费版本Free.Spire.PDF还是3.2版本,而其收费版本目前为4.2版本,这里先直接说测试结果,免费版本可以进行数字签名,但图片签名不行,只要将图片赋给对应参数,保存时必定报转化异常,而4.2版本代码与3.2的相比需要稍作调整(只是建议性质,不调整也能运行),可以成功保存,另外收费版本的我还找了PDF-Writer,因为它的例子本身就包含了图片签名部分,所以这里不做描述,以下是iText和Spire代码:
        using iTextSharp.text.pdf.security;
        using Org.BouncyCastle.Pkcs;//这是itext自带的,不需要单独添加BouncyCastle包
        using System.Drawing;
    
        public class PdfDigstSign
        {
            static string pfxPath = "001180530510644.pfx";
            static string pfxPwd = "111111";
            static string sourcePdf = "template.pdf";
            static string imgPath = "password_1.png";
            public static void PDFSignWithIText5Demo()
            {
                string outPutPdf = "ImageStampWithIText5.pdf";
                var reader = new iTextSharp.text.pdf.PdfReader(sourcePdf);
                using (FileStream fs = new FileStream(outPutPdf, FileMode.Create))
                {
                    var stamper = iTextSharp.text.pdf.PdfStamper.CreateSignature(reader, fs, '\0', null, true);
                    var appearance = stamper.SignatureAppearance;
                    appearance.Reason = "签名测试原因";
                    appearance.Location = "签名位置";
                    appearance.SetVisibleSignature(new iTextSharp.text.Rectangle(200, 200, 300, 300), 1, "itext");
                    //itext会自动对图片进行等比例缩放
                    appearance.SignatureGraphic = iTextSharp.text.Image.GetInstance(imgPath);
                    appearance.CertificationLevel = iTextSharp.text.pdf.PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED;
                    appearance.SignatureRenderingMode = iTextSharp.text.pdf.PdfSignatureAppearance.RenderingMode.GRAPHIC;
    
    
                    using (var stream = File.OpenRead(pfxPath))
                    {
                        Pkcs12Store store = new Pkcs12Store(stream, pfxPwd.ToCharArray());
                        string keyAlias = null;
                        foreach (string alias in store.Aliases)
                        {
                            keyAlias = alias;
                            break;
                        }
                        var chains = store.GetCertificateChain(keyAlias).Select(c => c.Certificate).ToList();
                        var signature = new PrivateKeySignature(store.GetKey(keyAlias).Key, DigestAlgorithms.SHA1);
                        MakeSignature.SignDetached(appearance, signature, chains, null, null, null, 0, CryptoStandard.CADES);
                    }
                }
            }
            public static void PDFSignWithSpirePDF4_2Demo()
            {
                //必须要商业版才行
                var doc = new Spire.Pdf.PdfDocument();
                doc.LoadFromFile(sourcePdf);
                var page = doc.Pages[0];
    
                var cert = new Spire.Pdf.Security.PdfCertificate(pfxPath, pfxPwd);
                var signature = new Spire.Pdf.Security.PdfSignature(doc, page, cert, "spire");
                //
                var loApprearance = signature.Appearence;
                var image = Spire.Pdf.Graphics.PdfImage.FromFile(imgPath);
                var template = new Spire.Pdf.Graphics.PdfTemplate(image.Width, image.Height);
                template.Graphics.DrawImage(image, 0, 0,100,100);//spire由代码指定缩放
                loApprearance.Normal = template;
                signature.Bounds = new RectangleF(new PointF(100, 100), new SizeF(100, 100));
                signature.Reason = "签名原因";
                signature.LocationInfo = "签名位置";
                signature.GraphicsMode = Spire.Pdf.Security.GraphicMode.SignNameOnly;
                signature.DocumentPermissions = Spire.Pdf.Security.PdfCertificationFlags.ForbidChanges;
                string output = "ImageStampWithSpirePDF4_2.pdf";
                doc.SaveToFile(output);
            }
        }

    上述代码运行完后,两者的签名面板部分稍有不同,具体如下:


    之所以生成的略有差异,主要是方法参数不同,在iText中,将PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED修改为PdfSignatureAppearance.NOT_CERTIFIED,两者将显示一致

    2018-04-11补充

    Spire.Pdf低商业版本(3.x版本)图片签名有bug,只能通过ConfiguerGraphicPath属性指定图片的物理地址来进行图片签名,但这样就不能利用上面例子中template可以为图片指定压缩比来减小PDF大小的好处,所以折中的方式是设置签名方式为如下方式

    signature.DigitalSigner = "";
    signature.ConfigGraphicType = ConfiguerGraphicType.Text;

    利用空字符串来间接的达到只输出显示图片的效果

    另外补充 Spire.Pdf免费版不能进行并发操作,商业版才可以


    展开全文
  • Android 加载PDF文件电子签名不显示问题

    千次阅读 热门讨论 2019-06-13 16:24:20
    虽然该库能加载出来pdf文件,却不显示电子签名,我只截取了手机屏幕的一小部分如下图所示: 然后就用了另一个三方库,该库的地址是:https://github.com/barteksc/AndroidPdfViewer 之后电子签名就显示出来了...

    今天在使用第三方库加载pdf文件时,使用的依赖库的地址是:https://github.com/voghDev/PdfViewPager

    虽然该库能加载出来pdf文件,却不显示电子签名,我只截取了手机屏幕的一小部分如下图所示:

    然后就用了另一个三方库,该库的地址是:https://github.com/barteksc/AndroidPdfViewer

    代码中我主要设置的这几个属性:

     pdfView.fromFile(new File(path))
                    .defaultPage(0)
                    .onPageChange(this)
                    .enableAnnotationRendering(true)
                    .onLoad(this)
                    .scrollHandle(new DefaultScrollHandle(this))
                    .spacing(10)
                    .onPageError(this)
                    .load();
    

    之后电子签名就显示出来了如下图所示:

     

    展开全文
  • PDF文件指定文字位置添加电子签名图片 文章目录PDF文件指定文字位置添加电子签名图片一、技术使用背景二、使用步骤1.引入依赖2.具体代码2.控制台输出2.生成结果展示总结 一、技术使用背景 一些PDF文件会有...

    使用itext7在PDF文件中的指定文字位置添加电子签名图片


    一、技术使用背景

    在一些PDF文件会有负责人签名、董事签名等签名处需要插入电子签章或者签名,所以将此技术点记录下来,其中也不乏有对其他博主技术的借用,请勿喷。

    二、使用步骤

    1.引入依赖

    此次使用的是itext7,pom文件中引入依赖:

            <dependency>
                <groupId>com.itextpdf</groupId>
                <artifactId>itext7-core</artifactId>
                <version>7.1.12</version>
                <type>pom</type>
            </dependency>
    

    2.具体代码

    代码如下:

    package cn.basicproject.basics8.imginPDF;
    
    import com.itextpdf.io.image.ImageData;
    import com.itextpdf.io.image.ImageDataFactory;
    import com.itextpdf.kernel.geom.Rectangle;
    import com.itextpdf.kernel.pdf.PdfDocument;
    import com.itextpdf.kernel.pdf.PdfReader;
    import com.itextpdf.kernel.pdf.PdfWriter;
    import com.itextpdf.kernel.pdf.canvas.parser.PdfDocumentContentParser;
    import com.itextpdf.kernel.pdf.canvas.parser.listener.IPdfTextLocation;
    import com.itextpdf.kernel.pdf.canvas.parser.listener.RegexBasedLocationExtractionStrategy;
    import com.itextpdf.layout.Document;
    import com.itextpdf.layout.element.Image;
    import java.util.Collection;
    
    public class ImageInPDF {
        public static void main(String args[]) {
            String input = "D:\\Java.pdf";
            //通过指定pdf文件名,指定关键字,和指定的pdf文件的待处理页数做参数
            getKeyWordsLocation(input, "负责人签名:", 1);
        }
    
        /**
         * 得到关键字位置
         * @param input 源文件
         * @param KEY_WORD 关键字
         * @param pageNum 文档页数
         */
        public static void getKeyWordsLocation(String input, String KEY_WORD, int pageNum) {
            RegexBasedLocationExtractionStrategy strategy = new RegexBasedLocationExtractionStrategy(KEY_WORD);
            try {
                //得到需要插入的图片
                ImageData imageData = ImageDataFactory.create("D:\\test.jpg");
                //核心思路为对PdfDocument对象采用某种Strategy,这里使用RegexBasedLocationExtractionStrategy
                PdfReader pr = new PdfReader(input);
                //生成新的PDF文件
                PdfDocument pd = new PdfDocument(pr, new PdfWriter("D:\\test.pdf"));
                //int pageNum = pd.getNumberOfPages();获取新pdf的总页数
                Document document = new Document(pd);
                PdfDocumentContentParser pdcp = new PdfDocumentContentParser(pd);
                //文本内容具体解析借助使用PdfDocumentContentParser类(实质使用PdfCanvasProcessor进行处理), 对待处理页面装配合适策略
                RegexBasedLocationExtractionStrategy regexStrategy = pdcp.processContent(pageNum, strategy);
                //获取处理结果
                Collection<IPdfTextLocation> resultantLocations = strategy.getResultantLocations();
                //自定义结果处理
                if (!resultantLocations.isEmpty()) {
                    for (IPdfTextLocation item : resultantLocations) {
                        Rectangle boundRectangle = item.getRectangle();
                        System.out.println(item.getText());
                        System.out.println("关键字“" + KEY_WORD + "” 的坐标为 x: " + boundRectangle.getX() + "  ,y: " + boundRectangle.getY());
                        Image image = new Image(imageData).scaleAbsolute(70, 40).setFixedPosition(pageNum, boundRectangle.getRight() + 5f, boundRectangle.getBottom());
                        document.add(image);
                    }
                    document.close();
                } else {
                    System.out.println("结果为空");
                }
                pr.close();
                pd.close();
            } catch (Exception e) {
                System.err.println("读取文件失败!");
                e.printStackTrace();
            }
        }
    }
    
    

    2.控制台输出

    代码如下:

    "C:\Program Files\Java\jdk1.8.0_151\bin\java.exe" "-
    负责人签名:
    关键字“负责人签名:” 的坐标为 x: 321.31  ,y: 378.48105
    
    Process finished with exit code 0
    

    补充:为了方便就做这些展示,有兴趣的可以多打点展示一下自己跑出来的信息。

    2.生成结果展示

    PDF生成后效果截图如下:


    在这里插入图片描述


    注意:仅做展示用

    总结

    此次纪录就是为了收集开发过程中遇到的技术点,如果对你有帮助,拿走不谢。如有更好的方法请在评论区写上链接,谢谢!

    展开全文
  • 电子签名

    千次阅读 2015-09-07 11:37:31
    再介绍电子签名前,我们首先介绍一下Hash,也叫作散列或者哈希。 Hash函数的定义是:变长的输入变换成定长的输出。 常见Hash算法:MD5(128位),输入无论多长,都会变成定长的128位输出。 Hash的特点: 1、易变...
  • Java实现对png图片文件电子签名操作

    千次阅读 2018-08-04 10:47:22
    * 根据图片像素位置添加用户电子签名 * @param imagePath 要操作的图片路径 * @param signImagePath 电子签名图片路径 * @param outImagePath 合成后输出图片路径 * @param width 像素位宽度  * @param height...
  • Linux使用PGP签名验证文件完整性

    万次阅读 2017-08-11 20:04:37
    所以,使用一个文件之前(如安装一个软件或操作系统)最好先对文件进行完整性(或者说“原始性”)的检验。常用的文件校验方法有SHA、MD5、CRC和PGP签名等。本文主要阐述一下Linux使用P...
  • SOLIDWORKS 产品数据管理 (PDM) 解决方案可帮助您控制设计数据,并且从本质改进您的团队就产品开发进行管理和协作的方式。使用 SOLIDWORKS PDM Professional,您的团队能够:1. 安全地存储和索引设计数据以实现...
  • Python给指定文件数字签名

    千次阅读 2019-11-20 11:45:14
    Python给指定文件数字签名 数字签名概念: 数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似...
  • 参考: ... 如何进行多次PDF签名 ...如果想进行多次签名,就只需对已经进行签名的PDF文件再次调用sign方法进行再次签名即可(第六点有张图片就有两个签章,这就是多次签名的结果)。 PdfStamper.creat...
  • 数字签名技术是电子签名的底层核心技术,由非对称密钥加密技术和数字摘要技术构成。首先发送方利用Hash函数对文件内容进行加密并生成数字摘要,然后利用私钥对数字摘要加密形成数字签名;接收方利用发送方提供的公钥...
  • 1、广义的电子签名是指任何数据电文中以电子形式所...是用数字证书对电子文件签名后电子文件上保留的签署结果,用以证明签署人的签署意愿。所以数字证书是数字签名的基础,数字签名是数字证书的一种应用结果。 4、电
  • 一键电子签名

    千次阅读 2018-01-11 12:45:17
    需提前做好签名DWG文件
  • python制作电子签名

    2020-05-01 15:00:38
    毕业的文件因为疫情影响,很多签名要使用电子签名,众所周知,电子签名可以使用Photoshop制作,但是Photoshop安装过程复杂,占内存,杀鸡焉用牛刀!网上提供的在线转换也要注意安全性!因此我用python写了制作电子...
  • 电子签名发展史

    千次阅读 2013-07-08 13:44:22
     目前,可以通过多种技术手段实现电子签名确认了签署者的确切身份后,电子签名承认人们可以用多种不同的方法签署一份电子记录。方法有:基于pKI的公钥密码技术的数字签名;以生物特征统计学为基础的识别标识;...
  • 电子签名怎么签才有效?

    万次阅读 2019-02-13 10:29:08
    第一次接触电子签名的企业或个人,往往不太清楚,电子签名怎么签才有效,电子签名的签署流程又是怎样的,第三方电子签名平台如何确保电子签名的法律效力。...比如第三方电子签名平台与CA机构需对用户的身份进行...
  • 电子签名和数字签名

    2007-10-09 11:08:00
    电子签名和数字签名的...传统商务活动中,为了保证交易的安全与真实,一份书面合同或公文要由当事人或其负责人签字、盖章,以便让交易双方识别是谁签的合同,保证签字或盖章的人认可合同的内容,法律才能承认这
  • JS如何实现电子签名

    千次阅读 2020-06-10 13:38:44
    这里写自定义目录标题JS实现电子签名 JS实现电子签名 最近做一个在线考核的项目,其中有一个需求是考核完毕后录入成绩时需要进行签名,签名后要表单显示出来并且进行成绩单的打印 其实思路已经很明显了。 1.第...
  • Vue中引用 jsSignature 电子签名

    千次阅读 2020-06-10 14:36:25
    安装jquery ... vue.config.js文件中导入jquery如下: const webpack = require('webpack'); module.exports={ configureWebpack: { plugins: [ new webpack.ProvidePlugin({ $:"jquery", jQuer
  • Android自定义View实现电子签名功能

    千次阅读 2016-06-14 17:48:15
    近来项目中遇到了实现电子签名的功能,现在已经完成,觉得可以,故把这一个模块抽取出来一个demo,供大家看看有什么可改进的。代码写的比较简单,代码就是注释,下面效果图: 下面是代码 package ...
  • 如何直接在电子文档上签名

    万次阅读 2018-12-26 14:54:11
    日常的办公学习中,我们经常要接触到PDF文档,特别是当我们需要对一份电子进行签名时,很多时候操作都是把文件打印出来,签名后再扫描成电子档,这样做实在太麻烦了,有没有更加简便的方法呢? 如下小编教大家一...
  • PDF电子签名分析

    千次阅读 2017-03-23 11:25:23
    from http://blog.csdn.net/arlaichin/article/details/40351543 PDF文档结构分析可参见:...下面仅对PDF的电子签名进行分析 PDF的签名标准是 PAdES,ETSI TS 102 778. 签名后的PDF文档格式:
  • Android 画布使用之电子签名

    千次阅读 2016-12-19 22:10:22
    所以毫无疑问,电子签名又是公司最近需要开发的新功能。 应用场景:以前去银行办理业务都得去柜台,填N张表格,写N多个签名。随着智能机的普及、移动终端app的使用场景越来越广泛。手机银行app也给越来越多的人办理...
  • http://telecom.chinabyte.com/busnews/216485043416072192/20040831/1848272.shtml  中国首部真正意义的信息化法律诞生 网上通行将有“身份证” 此举将大大促进和规范中国电子交易的发展 企业对电子商务的...
  • 电子签名有什么用?

    2017-02-09 10:35:06
    但是这些签字签名都是纸张签名,如果需要电子文档签名,就需要用到电子签名了,比如word文档,excel报表,一些web办公审批中,需要签名,就会集成电子签名软件才可以实现。我们把电子签名的技术支持给大家...
  • pdf.js不显示电子签名

    2020-08-21 14:04:18
    项目开发中遇到需要将PDF文件进行电子签名并显示的需求,使用得是PDF.js的js插件进行的渲染,前面都没有遇到问题,就是签名后显示上面一直不显示。后来才知道是因为该插件默认不显示电子签名,解决办法如下: ...
  • angularjs2集成电子签名

    千次阅读 2018-06-04 17:34:16
    angularjs2集成电子签名 1,首先注入 npm install angular2-signaturepad --save 2,项目中app.module.ts文件注入 import { SignaturePadModule } from 'angular2-signaturepad'; imports: [ ...
  • 如何用 Java 对 PDF 文件进行电子签章

    千次阅读 2018-04-12 10:43:52
    也许你想知道进行电子签章有什么作用,什么行业、什么地方会使用到,这些问题本次分享中都会涉及到,例如,为了保证电子处方不被篡改,电子签名这项技术目前如火如荼的互联网医院的电子处方中广泛应用。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,935
精华内容 14,774
关键字:

如何在文件上进行电子签名