代码之家  ›  专栏  ›  技术社区  ›  paul_479

itext5在上下文上签名图像

  •  0
  • paul_479  · 技术社区  · 8 年前

    当我签署文档并在签名外观中使用图像时,我得到了以下结果:

    enter image description here

    然而,我希望结果如下:

    enter image description here

    这是我的代码:

    PdfSignatureAppearance appearance =  stamper.getSignatureAppearance();
    appearance.setReason(info.getReason());
    appearance.setLocation(info.getLocation());
    appearance.setVisibleSignature(t.getRectangle(), 1, "SIGN");
    appearance.setSignatureGraphic(image); 
    appearance.setCertificationLevel(PdfSignatureAppearance.NOT_CERTIFIED); 
    appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC);
    MakeSignature.signDetached(appearance, digest, signature,chain, null, null, null, 0, MakeSignature.CryptoStandard.CADES);
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   Bruno Lowagie    8 年前

    PDF文档中数字签名的视觉表示是 . A. 小部件注释 是一种特定类型的注释。

    在PDF中,您拥有页面的实际内容。该内容存储在内容流中。页面在页面字典中定义。有一个 /Contents 此页面词典中引用多个内容流之一的条目。这些内容流一起包含描述页面内容的语法。

    注释不属于任何这些流。使用从页面字典中引用注释 /Annots 进入在你的情况下,有一个 /注释 引用具有签名外观的小部件注释的条目。

    所有注释都呈现在实际页面内容的顶部。

    长话短说:您有一个带有一些页面内容的PDF,并且在该页面内容的顶部添加了一个注释的外观。这是正常的。这是 . 您现在需要PDF查看器来呈现批注 在下面 页面内容。根据PDF规范,这是不可能的。

    对你的问题的简短回答是:你在问一些做不到的事情。最接近的解决方案是使图像透明(但这是另一个问题)。

        2
  •  0
  •   Community Mohan Dere    5 年前

    在内容之下,在某些情况下你可以做到 显得 成为。

    混合模式使用

    布鲁诺已经提到一种方法可能是 使图像透明 . 不过,常规(alpha通道样式)透明度有一个主要缺点:原始内容或图像(可能两者)会显得有些苍白。但PDF中有一种相关技术,可以以一种特殊的方式将前景和背景放在一起:混合模式。

    特别是如果您的pdf内容大多是黑白的,请使用混合模式 将创建与所需图像相似的结果。

    如果您的pdf尚未签名,您实际上可以将签名图像添加到页面背景本身,例如使用 UnderContent PdfStamper . (如果页面背景不透明,例如由于背景为白色填充矩形,这将变得有点困难,但仍然可以管理。)

    签名外观中的页面内容