PDFtron:更改元素名称

PDFtron: change name of element

我正在使用 PDFTron 的 Java SDK,我想更改元素的名称,然后将修改后的 PDF 写入新文件,但我得到以下输出:

PDFNet is running in demo mode.
Permission: read
Exception: 
     Message: SetName() can't be invoked on Obj of this type.

如何更改对象的名称?我的代码(在 Scala 中)如下:

def main(args: Array[String]): Unit = {
  PDFNet.initialize()

  var doc = new PDFDoc("example.pdf")
  var fdf = doc.fdfExtract
  var iter = fdf.getFieldIterator

  while (iter.hasNext) {
    var field = iter.next
    var obj = field.findAttribute("T")
    if (obj != null && field.getName.startsWith("MyPrefix")) {
      obj.setName("NewPrefix") // `field.setName` produces the same error
    }
  }
}

API Field.GetName() 在技术上是此叶字段和任何父字段的合并,由 ..

分隔

因此,虽然 Field.getName() 可能 return name.first,但字段的 T 值可能只是 first。这就是存在 Field.getPartialName() 的原因。

所以 better/safer 更改 T 值的代码是。

var obj = field.findAttribute("T")
if (obj != null && obj.isString() && obj.getAsPDFText().startsWith("MyPrefix")) {
  obj.setString("NewPrefix")
}