精华内容
下载资源
问答
  • 本文档描述了数字签名PDF文档结构中的设计以及PDF语言对签名相关特性的支持。Adobe® Reader®和Acrobat®已经实现了PDF的所有特性,基于公钥基础设施(PKI)的技术,它提供了全面的数字签名身份验证功能,第三方...
  • Pdf数字签名

    2014-09-19 10:59:32
    该例子程序是使用了iText签名PDF的,希望对大家有所帮助,谢谢! 压缩包附带了一个在网上找到的使用OpenSSL生成P12证书的方法,感谢分享这篇文章的网友!
  • PDF数字签名(ITEXT+keytool)

    热门讨论 2014-02-10 09:54:08
    用keytool生成数字证书,利用itext生成签名pdf,完整工程代码。
  • 主要介绍了Java PDF 添加数字签名的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 本文以Java代码演示如何获取PDF文档中的数字签名信息,包括签名人、签名位置、日期、原因、联系方式、签名在文档中的坐标等等。 程序环境包括: Spire.Pdf.jar(jar版本:3.11.6) Jdk 1.8.0(版本要求>=1.6.0...

    一、概述及程序环境要求

    本文以Java代码演示如何获取PDF文档中的数字签名信息,包括签名人、签名位置、日期、原因、联系方式、签名在文档中的坐标等等。

    程序环境包括:

    • Spire.Pdf.jar(jar版本:3.11.6
    • Jdk 1.8.0(版本要求>=1.6.0版本即可)
    • IDEA

    编辑代码前先导入jar到Java程序,两种导入方法供选择,可按需任选其一即可:

    1. 下载jar包导入:下载后解压到指定路径,并将lib文件夹下的spire.pdf.jar手动导入Java程序;

    2. maven程序中配置pom.xml文件,指定spire的maven路径及依赖,参考如下:

    <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
         </repository>
    </repositories>
    <dependencies>
    <dependency>
            <groupId>e-iceblue</groupId>
      <artifactId>spire.pdf</artifactId>
      <version>3.11.6</version>
    </dependency>
    </dependencies>
    

    配置完成后,导入jar到程序。

    注:程序环境可不用安装Adobe Acrobat

    二、Java代码

    import com.spire.pdf.*;
    import com.spire.pdf.security.PdfSignature;
    import com.spire.pdf.widget.PdfFormFieldWidgetCollection;
    import com.spire.pdf.widget.PdfFormWidget;
    import com.spire.pdf.widget.PdfSignatureFieldWidget;
    
    public class GetSignature {
        public static void main(String[] args) {
            //创建PdfDocument实例
            PdfDocument pdf = new PdfDocument();
            //加载含有签名的PDF文件
            pdf.loadFromFile("AddSignature.pdf");
    
            //获取域集合
            PdfFormWidget pdfFormWidget = (PdfFormWidget) pdf.getForm();
            PdfFormFieldWidgetCollection pdfFormFieldWidgetCollection = pdfFormWidget.getFieldsWidget();
    
            //遍历域
            for (int i = 0; i < pdfFormFieldWidgetCollection.getCount(); i++) {
                //判定是否为签名域
                if (pdfFormFieldWidgetCollection.get(i) instanceof PdfSignatureFieldWidget) {
                    //获取签名域
                    PdfSignatureFieldWidget signatureFieldWidget = (PdfSignatureFieldWidget) pdfFormFieldWidgetCollection.get(i);
                    //获取签名
                    PdfSignature signature = signatureFieldWidget.getSignature();
                    String location = signature.getLocationInfo();
                    String reason = signature.getReason();
                    String data = signature.getDate().toString();
                    String name = signature.getSignatureName();
    
                    System.out.println("签名位置信息:"+ location +"\n"+
                            "签名原因:" + reason +"\n"+
                            "签名日期:"+ data +"\n"+
                            "签名人:"+ name +"\n"+
                            "文档中的签名坐标:X = "+ signatureFieldWidget.getLocation().getX()+ "  Y = "+ signatureFieldWidget.getLocation().getY()
                           );
                }
            }
        }
    }
    

    数字签名信息读取结果:

    相关阅读推荐:

    展开全文
  • 本文通过Java程序示例代码展示如何来删除PDF文档中已有的数字签名。通过本文中的方法,在编辑代码前,须将free spire.pdf.jar 4.4.1文件导入java程序,如图所示为手动下载jar包然后解压导入程序的效果: 另外,也...

    本文通过Java程序示例代码展示如何来删除PDF文档中已有的数字签名。通过本文中的方法,在编辑代码前,须将free spire.pdf.jar 4.4.1文件导入java程序,如图所示为手动下载jar包然后解压导入程序的效果:

    另外,也可以通过maven仓库下载导入,通过这种方式需在pom.xml文件中配置maven仓库路径并指定jar版本(如下),配置完成后导入。

    <repositories>
            <repository>
                <id>com.e-iceblue</id>
                <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
            </repository>
        </repositories>
    <dependencies>
        <dependency>
            <groupId> e-iceblue </groupId>
            <artifactId>spire.pdf.free</artifactId>
            <version>4.4.1</version>
        </dependency>
    </dependencies>
    

    Java代码示例

    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.widget.PdfFieldWidget;
    import com.spire.pdf.widget.PdfFormWidget;
    import com.spire.pdf.widget.PdfSignatureFieldWidget;
    
    public class DeleteSignature {
    
        public static void main(String[] args) {
            //创建PdfDocument对象
            PdfDocument pdf = new PdfDocument();
    
            //加载PDF文档
            pdf.loadFromFile("AddSignature.pdf");
    
            //从文档获取form widget集合
            PdfFormWidget widgets = (PdfFormWidget) pdf.getForm();
    
            //遍历集合中的每一个元素
            for (int i = 0; i < widgets.getFieldsWidget().getList().size(); i++)
            {
                //获取指定widget
                PdfFieldWidget widget = (PdfFieldWidget)widgets.getFieldsWidget().getList().get(i);
    
                //判断widget是否为PdfSignatureFieldWidget
                if (widget instanceof PdfSignatureFieldWidget)
                {
                    //删除数字签名widget
                    widgets.getFieldsWidget().remove(widget);
                }
            }
    
            //保存文档
            pdf.saveToFile("RemoveSignature.pdf");
            pdf.dispose();
        }
    }
    

    签名删除小效果:

     

    相关文章推荐阅读:

     

    本文内容原创,如需转载请务必注明出处!

    展开全文
  • 运用非对称密钥加密技术与数字摘要技术描绘出数字签名技术的工作原理图,使用Linux系统中的shell命令实现数字签名技术中的创建私钥、导出公钥、私钥签名、公钥校验等实践操作,很好地展现了数字签名技术实践应用的可...
  • 所需测试文件:PDF、.pfx数字证书及密钥、PDF Jar包(Free Spire.PDF for Java)、签名图片(.png格式) 可信时间戳服务器:URL地址 注:以下代码中的所有测试文件路径均为IDEA程序项目文件夹路径,如C:\Users\...

    一、程序运行环境

    • 编译环境:IntelliJ IDEA
    • 所需测试文件:PDF、.pfx数字证书及密钥、PDF Jar包(Free Spire.PDF for Java)、签名图片(.png格式)
    • 可信时间戳服务器:URL地址

    :以下代码中的所有测试文件路径均为IDEA程序项目文件夹路径,如C:\Users\Administrator\IdeaProjects\Certificate_PDF\test.pdf,文件路径可自定义。

    关于jar导入方法:2种

    1.手动导入:下载jar包到本地,解压;在IDEA中,执行如下步骤导入:

    2. Maven配置导入。在pom.xml中配置如下内容下载导入: 

    <repositories>
            <repository>
                <id>com.e-iceblue</id>
                <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
            </repository>
        </repositories>
    <dependencies>
        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.pdf.free</artifactId>
            <version>4.4.1</version>
        </dependency>
    </dependencies>

     二、程序测试代码

    import com.spire.pdf.*;
    import com.spire.pdf.graphics.PdfImage;
    import com.spire.pdf.graphics.PdfTrueTypeFont;
    import com.spire.pdf.security.GraphicMode;
    import com.spire.pdf.security.PdfCertificate;
    import com.spire.pdf.security.PdfCertificationFlags;
    import com.spire.pdf.security.PdfSignature;
    
    import java.awt.*;
    import java.awt.geom.Point2D;
    import java.awt.geom.Rectangle2D;
    
    public class TimeStamp {
        public static void main(String[] args) {
            //加载PDF文档
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile("test.pdf");
    
            //加载pfx证书,及证书秘钥
            PdfCertificate cert = new PdfCertificate("pfx证书","密钥");
    
            //添加数字签名到指定页面,并设置其位置和大小
            PdfSignature signature = new PdfSignature(pdf, pdf.getPages().get(2), cert, "Mia");
            Rectangle2D rect = new Rectangle2D.Float();
            rect.setFrame(new Point2D.Float((float) pdf.getPages().get(0).getActualSize().getWidth() - 340, (float) pdf.getPages().get(0).getActualSize().getHeight() - 230), new Dimension(280, 120));
            signature.setBounds(rect);
    
            //设置签名为图片加文本模式
            signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);
    
            //设置签名的内容
            signature.setNameLabel("签字人:");
            signature.setName("Manager");
            signature.setDateLabel("日期:");
            signature.setDate(new java.util.Date());
            signature.setLocationInfoLabel("地点:");
            signature.setLocationInfo("成都");
            signature.setReasonLabel("原因:");
            signature.setReason("文档管理者");
            signature.setDistinguishedNameLabel("DN: ");
            signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());
            signature.setSignImageSource(PdfImage.fromFile("sign.png"));
    
            //设置签名的字体
            signature.setSignDetailsFont(new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 9)));
    
            //设置文档权限为禁止更改
            signature.setDocumentPermissions(PdfCertificationFlags.Forbid_Changes);
            signature.setCertificated(true);
    
            //配置时间戳服务器
            String timestampeServerUrl = "时间戳服务器地址";
            signature.configureTimestamp(timestampeServerUrl);
    
            //保存文档
            pdf.saveToFile("SignatureWithTimeStamp.pdf");
            pdf.close();
        }
    }
    

    时间戳效果如图:

    另推荐阅读:

    Java PDF数字签名(一) - 添加数字签名

    Java PDF数字签名(二) - 验证签名有效性

    Java PDF数字签名(三)- 添加空白签名域

    Java PDF数字签名(四)——获取PDF中的数字签名信息

    —End—

    展开全文
  • 这篇文章将介绍如何在Java应用程序中给PDF文档添加数字签名。 使用工具: Free Spire.PDF for JAVA 步骤: 1.创建一个Java project,并添加一个class SignPDF.JAVA 2.下载Free Spire.PDF for JAVA包并解压缩,...

    这篇文章将介绍如何在Java应用程序中给PDF文档添加数字签名。

    使用工具:

    Free Spire.PDF for JAVA

    步骤:

    1.创建一个Java project,并添加一个class SignPDF.JAVA

    2.下载Free Spire.PDF for JAVA并解压缩,然后从lib文件夹下,导入Spire.Pdf.jar包和Spire.Common.jar包到程序中

    3.SignPDF.JAVA中添加代码:

    import com.spire.ms.System.DateTime;
    import com.spire.pdf.FileFormat;
    import com.spire.pdf.PdfDocument;
    import com.spire.pdf.PdfPageBase;
    import com.spire.pdf.graphics.PdfImage;
    import com.spire.pdf.security.GraphicMode;
    import com.spire.pdf.security.PdfCertificate;
    import com.spire.pdf.security.PdfCertificationFlags;
    import com.spire.pdf.security.PdfSignature;
    import java.awt.geom.Rectangle2D;
    
    public class SignPDF {
        public static void main(String[] args){
            //加载PDF文档并获取第一页
            PdfDocument doc = new PdfDocument();
            doc.loadFromFile("Input.pdf");
            PdfPageBase page = doc.getPages().get(0);
    
            Rectangle2D.Float rec = new Rectangle2D.Float(100, 450, 310, 100);
    
            //Load pfx文件
            PdfCertificate certificate = new PdfCertificate("gary.pfx", "e-iceblue");
    
            //添加数字签名
            PdfSignature signature = new PdfSignature(doc, page, certificate, "signature1", rec);
    
            //设置签名详细信息
            PdfImage img = PdfImage.fromFile("E-iceblueLogo.png");
            signature.setSignImageSource(img);
            signature.setNameLabel("Signer:  ");
            signature.setName("Gary");
            signature.setContactInfoLabel("ContactInfo:  ");
            signature.setContactInfo("support@e-iceblue.com");
            signature.setDateLabel("Date:  ");
            signature.setDate(DateTime.getToday());
            signature.setLocationInfoLabel("Location:  ");
            signature.setLocationInfo("Chengdu");
            signature.setReasonLabel("Reason:  ");
            signature.setReason("The certificate of this document.");
            signature.setDistinguishedNameLabel("DL:  ");
            signature.setDistinguishedName(signature.getCertificate().get_IssuerName().getName());
            signature.setGraphicMode(GraphicMode.Sign_Image_And_Sign_Detail);
            signature.setDocumentPermissions(PdfCertificationFlags.Allow_Form_Fill);
            signature.setCertificated(true);
    
            //保存文件
            doc.saveToFile("SimpleSign.pdf", FileFormat.PDF);
        }
    }
    

    结果文件:

     

    展开全文
  • PDF文档中可添加数字签名,在添加签名前,需要准备可信任签名证书。对文档中已有的签名,可验证书签是否有效。也可通过一定方法来获取数字签名或者签名证书信息。下面以Java代码示例展示如何读取签名的证书信息。...
  • PDF数字签名介绍

    2013-09-09 15:18:03
    Bruno Lowagie写的关于PDF签名及验证的原理和实现,是数字签名最好的学习资料。
  • Java 验证PDF数字签名

    2021-02-12 14:14:36
    import com.spire.pdf.*;import com.spire.pdf.security.PdfSignature;import com.spire.pdf.widget.PdfFormFieldWidgetCollection;import com.spire.pdf.widget.PdfFormWidget;import ...
  • 其实数字签名是可以删掉的,今天小编就来为大家介绍删除PDF数字签名的方法,一起来看: 删除工具:迅捷PDF编辑器 具体的操作方法: 1:打开PDF编辑器,点击【打开】按钮,选择添加需要删除数字签名的PDF文件即可。 ...
  • import com.spire.pdf.PdfDocument;import com.spire.pdf.security.PdfSignature;import com.spire.pdf.widget.PdfFormFieldWidgetCollection;import com.spire.pdf.widget.PdfFormWidget;import ...
  • Java 添加验证PDF 数字签名 在设置文档内容保护的方法中除了对文档加密添加水印外应用数字签名也是一种有效防伪手段数字签名的文件很容易验证并且具有较高的权威性和可信度在Adobe PDF文档中有直接添加或验证数字...
  • 使用iTextSharp.pdf进行数字签名的demo,网上资料较少,我搜索的一个demo,然后进行 了二次修改
  • 上一篇文章介绍了如何在Java中给PDF文档添加数字签名,这篇文章接着介绍如何验证数字签名的有效性。 步骤: 1.创建一个Java project,并添加一个class VerifySignature.JAVA 2.下载Free Spire.PDF for JAVA包并解...
  • PDF数字签名设置步骤,设置自己的签名档
  • ItextPdf 数字签名,HTML转PDF功能

    千次阅读 2017-03-22 17:05:35
    ItextPdf 数字签名,HTML转PDF功能
  • PDF数字签名之(6.2如何生成公钥)

    千次阅读 2016-01-25 10:45:35
    PDF文档的数字签名功能的设计与所有相关的标准的兼容性 主流的公钥基础设施(PKI)部署在企业和政府的设置。PKI是 集人,政策,程序,硬件,软件,用于创建,分配,管理和 撤销,并使用数字标识包含公钥/...
  • 主要介绍了php实现往pdf中加数字签名操作,结合完整实例形式详细分析了php基于tcpdf插件实现数字签名操作的具体步骤与相关技巧,并附带crt加密文件、源码等供读者下载,需要的朋友可以参考下
  • iText 数字签名

    2018-03-12 14:47:45
    Digital Signatures for PDF documents A White Paper by Bruno Lowagie (iText Software) Introduction The main rationale for PDF used to be viewing and printing documents in a reliable way. The technology...
  • import com.spire.pdf.PdfDocument;import com.spire.pdf.security.PdfSignature;import com.spire.pdf.widget.PdfFormFieldWidgetCollection;import com.spire.pdf.widget.PdfFormWidget;import ...
  • codeprj上有itextsharp3制作pdf签名的范例。但是由于itextsharp签名显示为英文,所有需要修改。网上只有itextsharp5的源码了,下载编译发现接口变了。网上搜了很久才找到代码完成,故贴出供大家参考 using ...
  • PDF中的加数字签名是对文档权威性的有效证明。我们在向PDF文档添加签名时,需要准备可信任的签名证书。同时,对已有的签名,可验证签名是否有效,也可以获取文档中的签名证书信息。下面,以C#代码示例展示如何来获取...
  • import com.spire.pdf.PdfDocument;import com.spire.pdf.security.*;import com.spire.pdf.graphics.*;import java.awt.*;import java.awt.geom.*;public class digitalSignature {public static void main(String...
  • 一开始,请阅读关于AdobePDF中的数字签名的文章其次,读完这个之后,你会知道签名被存储在b和c字节之间,根据/ ByteRange [a b c d]指示器第三,我们可以从文档中提取b和c,然后提取签名本身(指导说它将是十六进制...
  • PDF文档中,有可直接添加或验证数字签名的功能方法,下面的文章中,将通过Java程序来介绍添加数字签名PDF文档,以及验证签名是否有效。 使用工具:Spire.PDF for Java Jar文件获取及导入方法: 方法1:可通过...
  • PDF文档进行数字签名必须确认以下两点:一是文件的确是由签名者签署;二是文件内容自签发后到收到为止未曾做过任何修改。文档签名证书不仅可以验证签名者的真实身份,还可以确保电子文档的完整性和可靠性。接下来...
  • H5数字签名-jSignature插件H5前端的电子签名,简单明了,使用MUI框架和JQuery的jSignature插件,可以绘图,奇怪了。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,145
精华内容 4,058
关键字:

pdf数字签名

友情链接: 代码及课件.rar