【问题标题】:PDFtron: change name of elementPDFtron:更改元素名称
【发布时间】:2021-02-11 17:35:32
【问题描述】:

我正在使用 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
    }
  }
}

【问题讨论】:

    标签: pdftron


    【解决方案1】:

    API Field.GetName() 在技术上是这个叶子字段和任何父字段的合并,由. 分隔。

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

    因此,更改 T 值的更好/更安全的代码是。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多