2013-04-26 101 views
2

我想在PDF中的元數據中添加自定義標籤而不是默認標籤。 而不是iText:使用Xmp在元數據中自定義Xml標籤

-<rdf:Description rdf:about="" xmlns:ls="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
-<TagId-20> 
    -<rdf:Seq> 
     <rdf:li>arr0</rdf:li> 
     <rdf:li>arr1</rdf:li> 
    </rdf:Seq> 
</TagId-20> 
</rdf:Description> 

我想要的元數據是這樣

-<TagId-20> 
    -<customTag> 
     <ls:userId>USERNAME</ ls:userId > 
     <ls:WONum>12-110992</ WONum > 
    </customTag > 
</TagId-20> 

我發現某處......有自定義XML標籤,我需要延長XmpArray並實現toString()方法。

我採取了以下..

public class CustomXmpArray extends XmpArray { 

private static final long serialVersionUID = -4551741336974797330L; 

public CustomXmpArray() { 
    super("dummy"); 
} 

@Override 
public String toString() { 
    StringBuffer buf = new StringBuffer(""); 
    String s; 
    for (String string : this) { 
     s = string; 
     buf.append(s); 
    } 
    return buf.toString(); 
} 
} 

的一個問題,我面對這裏,我不需要「類型」變量,但XmpArray多年平均值有一個無參數的構造函數,所以我被迫將一個虛擬值傳遞給超類XmpArray。我在執行中錯了嗎?

爲什麼XmpArray沒有無參數構造函數?

回答

0

我很困惑。你爲什麼需要XmpArray

你如何將自定義XML添加到XmpWriter?

有兩種選擇。

  1. 您創建自己的XmpSchema實現,並使用addRdfDescription(XmpSchema s)方法。在這種情況下,您將使用諸如XmpArrayLangAlt之類的對象將特定類型的內容添加到XmpSchema對象。看起來你想避免這種情況,所以你可能想要:
  2. 你創建你自己的包含你自己的XML的字符串,並使用addRdfDescription(String xmlns,String content)方法。

讓我從XMP規格報價:

中rdf:RDF元素可以包含零個或多個RDF:說明元素。下面的例子顯示了一個單一的RDF:Description元素:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <rdf:Description rdf:about="" 
     xmlns:dc="http://purl.org/dc/elements/1.1/"> 
     ... Dublin Core properties go here 
    </rdf:Description> 
</rdf:RDF> 

我想你alread有<rdf:RDF>標籤。您還有一個<rdf:Description>標籤。您不需要像都柏林核心這樣的標準模式,而需要自定義模式。

如果您想避免使用此<rdf:Description>標籤,那麼您要求我們告訴您如何執行違反規範的操作。我們不打算這樣做。

如果你想擁有這個<rdf:Description>標籤內的一些自定義XML,那麼它足以做這樣的事情:

xmpWriter.addRdfDescription("", "<TagId-20><customTag><ls:userId>USERNAME</ ls:userId ><ls:WONum>12-110992</ WONum ></customTag ></TagId-20>"); 

結果將是:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <rdf:Description rdf:about="" > 
     <TagId-20> 
      <customTag> 
       <ls:userId>USERNAME</ ls:userId > 
       <ls:WONum>12-110992</ WONum > 
      </customTag > 
     </TagId-20> 
    </rdf:Description> 
</rdf:RDF> 

難道這不是你要?如果沒有,你必須澄清。

另外:它會更好,如果你也定義,而不是通過一個空字符串爲xmlns參數命名空間。您可能想要閱讀XMP specification

+0

是的。這就是我想要的.. 我得到了與此相關的,其表示,一些帖子..如果我想更改默認標籤並有自己的結構,我需要延長XmpArray並實現toString方法。因此我遵循了這個方法。 您給出的解決方案非常直截了當。謝謝。 – Deepti 2013-04-29 04:11:44

+0

OK,如果答案爲你工作,請點擊「接受」接受的答案。 – 2013-04-29 07:32:56

相關問題