2013-04-22 201 views
0

我正在使用iText 5.4.0創建PDF文件。我需要添加一些自定義屬性的PDF。 我已經嘗試了兩種方法iText:使用Xmp在PDF中將自定義屬性設置爲元數據

  1. 方法的addHeader類com.itextpdf.text.Documentcom.itextpdf.text.pdf.PdfStamper
  2. setMoreInfo方法。

但這兩個都將自定義屬性添加到信息詞典。

我需要使用Xmp添加它們並將其恢復到Xml文件中。我怎樣才能做到這一點??

+1

正如iText郵件列表中的手腳所述:您只能從信息字典中爲PDF/A中描述的元數據創建一個XMP流。沒有規範將信息字典中的「自定義」數據映射到XMP,原因很簡單,因爲數據是「自定義」的。您需要使用您開發的自定義XmpSchema來創建XMP流,以滿足您的自定義需求。 – 2013-04-22 07:38:11

回答

0

是.. !! ..的時候實現這樣

public class CustomSchema extends XmpSchema 
{ 

private static final long serialVersionUID = -4551741356974797330L; 

public static final String LABELID = "ls:LabelId"; 

public CustomSchema() { 
    super("cusprop"); 
} 

public void addLabelId(String labelId) { 
    XmpArray array = new XmpArray(XmpArray.UNORDERED); 
    array.add(labelId); 
    setProperty(LABELID, array); 
} 
public void addLabelArr(String tagId, String[] tagValue) { 
    XmpArray array = new XmpArray(XmpArray.ORDERED); 
    for (int i = 0; i < tagValue.length; i++) { 
     array.add(tagValue[i]); 
    } 
    setProperty(tagId.toString().replace(" ", "").trim(), array); 
} 
} 

生成的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> 

爲了得到上述結構,我需要做的?有沒有可用的例子?

相關問題