【问题标题】:Add signature to pdf with itext使用 itext 将签名添加到 pdf
【发布时间】:2016-12-29 15:04:26
【问题描述】:

我如何使用 itext 将电子签名(人们在平板电脑上签名)添加到 PDF,直接添加签名而不转换为图像,因此,eIDAS 规定,基本电子签名程序得到维护。

我不想要带有证书的数字签名,只有写在平板电脑上的个人签名。

signosigns 应用就是一个例子:http://en.signotec.com/portal/seiten/download-signosign-mobile-for-android-900000340-10002.html

【问题讨论】:

  • 您昨天已经问过完全相同的问题。编辑您的原始问题以添加详细信息:stackoverflow.com/posts/41360069/edit。标记关闭。 stackoverflow.com/questions/41360069/…
  • 请看这里stackoverflow.com/questions/40461860/…。您已经接受了一个不能解决您的问题的答案使用 itext 以直接添加签名而不是转换为图像的方式。嵌入在 PDF 中的签名图像根本没有法律价值,因为任何文档中的任何人都可以毫不费力地复制它。即使是捕获生物特征也不直接符合 eIDAS。您将需要一个法律框架中的协议来确保身份、时间戳或不可否认性
  • 但是基本的 eIDAS 并没有说明需要所有这些信息。 Adobe acrobat 甚至允许您使用图像中的签名,所以我认为它应该足够了。那里的答案显示使用我知道我不需要的证书
  • 请阅读答案。 EIDAS 要求识别签名者、文档的完整性以及签名者与签名之间的关系。将这些概念外推到手写签名中,并考虑嵌入的图像是否满足它们

标签: android pdf itext electronic-signature


【解决方案1】:

使用 itext pdfstamper 写签名。

FileOutputStream os = new FileOutputStream(destFileName);
PdfStamper stamper = new PdfStamper(reader, os);

哪里 reader 是 sec 文件阅读器,然后一旦你得到了压模。

PdfPatternPainter painter = stamper.getOverContent(1).createPattern(200, 150);
painter.setColorFill(BaseColor.ORANGE);
painter.beginText();
painter.setTextMatrix(AffineTransform.getTranslateInstance(0, 50));
painter.setFontAndSize(BaseFont.createFont(), 70);
painter.showText(waterMarkString);
painter.endText();

for (int i = reader.getNumberOfPages(); i > 0; i--) {
    PdfContentByte overContent = stamper.getOverContent(i);
    overContent.setColorFill(new PatternColor(painter));
    overContent.rectangle(200, 300, 200, 150);
    overContent.fill();
}

设置文字和尺寸,然后。

reader.close();
stamper.close();
os.close();

然后关闭阅读器、压模和输出流。

将显示签名。

【讨论】:

  • 好的,但是从代码中我无法检测到我将在何处或以何种形式添加签名。由于它必须由用户绘制,我猜我需要用画布捕获它或以类似的方式,但从我在这里看到的情况来看,您只能将其作为字符串添加到 showtext 中,还是我遗漏了什么?
  • 可以用canvas类的toString方法替换文字......显示签名
  • 问题中作为示例明确提到的signosign应用程序使用数字签名来保护签名图像。这个答案中的代码显然没有。
猜你喜欢
  • 2015-06-04
  • 2017-12-19
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多