首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iTextPDF签名:如何不显示签名字段,而是显示图像

iTextPDF签名:如何不显示签名字段,而是显示图像
EN

Stack Overflow用户
提问于 2019-10-18 09:38:56
回答 1查看 798关注 0票数 0

我使用itextpdf-5来签署PDF。我想签署文件,但使所有字段(原因,位置)都不可见,除了图像。我可以在第三方程序中这样做(我附上这样一个PDF的示例:签名存储所有数据,但不显示)。在我的程序中,我没有在文档中找到这样的东西(我正在附上代码示例)。

包含隐藏数据的示例PDF

代码语言:javascript
复制
 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) {}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-18 11:57:43

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

代码语言:javascript
复制
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

代码语言:javascript
复制
appearance.setRenderingMode(RenderingMode.GRAPHIC);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58448091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档