未使用iTextpdf 5.5.13在PDF模板中设置“数字签名”字段

时间:2019-03-07 10:12:09

标签: java pdf itext

我想通过使用Adobe Acrobat在from中设置一些字段。我希望最终生成的PDF必须包含数字签名组件。

我想使用Java和itextpdf 5.5.13 jar实现此目的。

到目前为止,这是我的代码:

     //Getting PDF Reader
     PdfReader reader = null;
     //getting PDF Stamper
     PdfStamper stamper = null;
     //FacesContext context = FacesContext.getCurrentInstance();
     try {
            String src = "D:\\workspace2\\runtime-EclipseApplication\\Project\\WebContent\\resources\\" +
                    "pdf_form_template\\invoice.pdf";

            reader = new PdfReader(src);
            stamper = new PdfStamper(reader, new FileOutputStream(pdfPath));

            //Query and change fields in existing document by method calls.
            AcroFields form = stamper.getAcroFields();

            form.setField("contactNumber",phone_no);
            form.setField("name",name);
            form.setField("invoiceNumber",invoice_no);
            form.setField("GSTIN",gstin_no);
            form.setField("GSTIN_2",gstin_no);
            form.setField("Date","06/March/2019");
            form.setField("Ms",name);
            form.setField("Address 1",address);
            form.setField("Pin",pin_no);
            form.setField("State Code",state_code);
            form.setField("SNoRow1","1.");
            form.setField("Amount in Words",amount_in_words);
            form.setField("DESCRIPTIONRow1",desc);
            form.setField("HSN CODERow1",HSN_code);
            form.setField("AMOUNTTaxable Value", texable_value);
            form.setField("AMOUNTCGST 18", cgst_value);
            form.setField("AMOUNTSGST 9", sgst_value);
            form.setField("AMOUNTIGST 9", igst_value);
            form.setField("AMOUNTGRAND TOTAL", grand_total);

          //digital signature field in form template
            form.setField("digitalSignature","");

} catch (Exception e) {
    // TODO: handle exception
    e.printStackTrace();
}finally {
    if (stamper != null) {

        try {
            stamper.setFormFlattening(true);
            stamper.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
    if (reader != null) {
        reader.close();
    }
}

我得到的输出pdf包含所有设置的字段,数字签名除外。

1 个答案:

答案 0 :(得分:0)

setFormFlattening(true)是我最后得到拼合的pdf的原因。 使用partialFormFlattening是正确的方法。