java - Apache PDFBox 禁用签名字段

标签 java pdfbox

我正在尝试读取 PDF 文件,然后在此过程中禁用签名字段。

PDDocument pdDoc = null;
try {
    final int FLAG_READ_ONLY = 1;
    File file = new File("C:/sample.pdf");
    InputStream is = new FileInputStream(file);
    pdDoc = PDDocument.load(is);
    PDDocumentCatalog catalog = pdDoc.getDocumentCatalog();
    PDAcroForm form = catalog.getAcroForm();
    List<PDField> acroFormFields = form.getFields();
    for (PDField field: acroFormFields) {
        if (field.getFieldType().equalsIgnoreCase("Sig")) {
            field.getFullyQualifiedName();
            field.setReadonly(true);
            field.getDictionary().setInt("FF", FLAG_READ_ONLY);
        }
    }
    if (pdDoc != null) {
        pdDoc.close();
    }
} 

我的问题:

  1. 我怎么知道这个禁用是否有效?因为,当我打开 PDF 我仍然可以签署文件。
  2. field.getDictionary().setInt("FF", FLAG_READ_ONLY); 我没有看到标志值 Ff,所以我应该使用哪个标志。文档说 FLAG_READ_ONLY - Ff 标志 here .

最佳答案

在这个过程中我还需要保存文档。 所以 pdDoc.save("新文件的路径"); -> 为我工作,签名字段被禁用。

关于java - Apache PDFBox 禁用签名字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018839/

相关文章:

java - Solr:在solr查询响应中引入自定义字段

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

java - PdfBox 将多个图像添加到 pdf 中

java - 无法运行GWT项目

java - 从文本文件中解析数字

Java - 使用 PDFBox 将多个图像合并为一个 PDF

java - 如何使用 PDFBOX 从 pdf 中提取对角线水印并通过保持对齐来提取文本

java - 从 PDF 中提取文本位置

java - 如何更改创建新文件的默认目录

java - C# Little-Endian 从 Java Big-Endian 转换