java - iTextPDF 签名 : how to not show signature fields, 但显示图像

标签 java itext sign pdfstamper

我使用 itextpdf-5 来签署 PDF。我想签署该文档,但要使除图像之外的所有字段(原因、位置)不可见。我可以在第三方程序中执行此操作(我附上此类 PDF 的示例:签名存储所有数据,但不显示)。 我在文档中没有找到类似的内容来在我的程序中执行此操作(我附上代码示例)

Example PDF with hide data

 private static void emptySignature(String src, String dest, String sigName, int page, int x, int y) {
    try {
        Image image = Image.getInstance(new File(currentPatient.getCurrentSign().getLocalFilePath()).toURL());;
        PdfReader reader = new PdfReader(src);
        FileOutputStream os = new FileOutputStream(dest);
        PdfStamper stamper = PdfStamper.createSignature(reader,os,'\0',new File("data/results/temp"),true);

        PdfSignatureAppearance appearance = stamper.getSignatureAppearance();
        appearance.setVisibleSignature(new Rectangle(x,y,x+80,y-60),page,sigName); 
        //Hide it!
        appearance.setReason("Nikita");
        appearance.setLocation("Sanitas");
        //No hide
        appearance.setImage(image);

        ExternalSignatureContainer external = new ExternalBlankSignatureContainer(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED);
        MakeSignature.signExternalContainer(appearance,external,8192);
        os.close();
        reader.close();
        stamper.close();
    } catch (Exception ex) {}
}

最佳答案

PdfSignatureAppearance 有一个带有 RenderingMode 参数的 setter setRenderingModeRenderingMode 是具有以下值的枚举:

public enum RenderingMode {
    /**
     * The rendering mode is just the description.
     */
    DESCRIPTION,
    /**
     * The rendering mode is the name of the signer and the description.
     */
    NAME_AND_DESCRIPTION,
    /**
     * The rendering mode is an image and the description.
     */
    GRAPHIC_AND_DESCRIPTION,
    /**
     * The rendering mode is just an image.
     */
    GRAPHIC
}

要使除图像之外的所有字段(原因、位置)不可见,只需将渲染模式设置为GRAPHIC:

appearance.setRenderingMode(RenderingMode.GRAPHIC);

关于java - iTextPDF 签名 : how to not show signature fields, 但显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58448091/

相关文章:

java - 我们可以在 Java 中将 2 种字体样式组合在一起吗?

c# - 使用 iTextSharp 阅读 PDF 时出现奇怪的字符

pdf - 如何使用 pdfbox 在 Java 中签署 pdf

java - 什么java语句或函数来格式化尼日利亚奈拉货币的货币

java - 如何通过测试证明 arraylist 不是线程安全的?

java - 如何停止从 Eclipse Gradle 插件启动的 Tomcat 服务器?

java - 在 EJB 3.0 (WebLogic 11gR1) 上模拟 @Startup

java - 将页面的多个副本插入 PDF

java - 将 rowspan 与 itext pdf 一起使用时无法显示背景颜色

node.js - 为什么 Node.js crypto.sign 函数是不确定的?