OpenOffice中的签名字段,用于在平板电脑上书写,而不是数字签名

时间:2014-09-01 11:40:14

标签: openoffice-writer

我想要一个"签名字段"在我的OpenOffice编写器文档中。

我需要iOS / gPlay应用程序"PDF Forms"在触摸屏上签名PDF文档(手写/笔)。

根据他们的常见问题解答,我需要在我的面向对象文档中使用签名字段 - 但即使经过几个小时的研究,如果OO提供这样的字段,我现在还没有。我只找到文本字段或数字签名/证书。

你有提示吗?

谢谢你, 基督教

1 个答案:

答案 0 :(得分:0)

似乎OpenOffice只有一部分字段可用,并且签名字段不可用。

我现在要做的是添加一个文本字段,将其命名为fldSignature1并使用iText我会以编程方式更改每个以“fldSignature”开头的字段,并使用签名字段

更新: 这里是我成功使用的代码 正如我所说,我已经创建了一个表单,其中我放置了一个文本框,作为签名字段的占位符,在我的例子中,我将其命名为fldFirma,您可以将替换代码放在循环中以更改包含前缀的任何字段等等......

这里是代码

    String filename = Environment.getExternalStorageDirectory().getPath() + "/testpdf.pdf";
    String filenameOut = Environment.getExternalStorageDirectory().getPath() + "/testpdfCompiled.pdf"; 
    PdfReader reader = new PdfReader(filename);

    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(filenameOut), '\0', true);
    AcroFields fields = stamper.getAcroFields();

    fields.setGenerateAppearances(true);

    String[] fieldsNames = (String[]) fields.getFields().keySet().toArray(new String[fields.getFields().keySet().size()]);
    for (String fieldName : fieldsNames) {
        if (fieldName.equals("fldFirma")) { //change this part with your logic to identify the signature field
            List<FieldPosition> fieldPositions = fields.getFieldPositions(fieldName);
            AcroFields.FieldPosition fieldPosition = fieldPositions.get(0);
            // i remove the "placeholder field"
            fields.removeField(fieldName);

            // and place at its position, the new empty signature field
            stamper.addSignature(
                fieldName,
                fieldPosition.page,
                fieldPosition.position.getLeft(),
                fieldPosition.position.getTop(),
                fieldPosition.position.getRight(),
                fieldPosition.position.getBottom()
                );
        }
    }
    // close pdf stamper
    // stamper.setFormFlattening(true);
    stamper.close();

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