2013-04-22 109 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> 

为了得到上述结构,我需要做的?有没有可用的例子?

相关问题