iText:使用Xmp将自定义属性设置为PDF中的元数据

iText:使用Xmp将自定义属性设置为PDF中的元数据,pdf,itext,Pdf,Itext,我正在使用iText 5.4.0创建一个PDF文件。我需要添加一些自定义属性到pdf。 我尝试了两种方法 com.itextpdf.text.Document的addHeader方法 com.itextpdf.text.pdf.PdfStamper的setMoreInfo方法 但这两种方法都将自定义属性添加到信息字典中 我需要使用Xmp添加它们,并检索回Xml文件。我该怎么做???是的。。!!。。得到了如下实现的自定义模式 public class CustomSchema extends Xm

我正在使用iText 5.4.0创建一个PDF文件。我需要添加一些自定义属性到pdf。 我尝试了两种方法

  • com.itextpdf.text.Document的addHeader方法
  • com.itextpdf.text.pdf.PdfStamper的setMoreInfo方法
  • 但这两种方法都将自定义属性添加到信息字典中


    我需要使用Xmp添加它们,并检索回Xml文件。我该怎么做???

    是的。。!!。。得到了如下实现的自定义模式

    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);
    }
    }
    
    public类CustomSchema扩展了XmpSchema
    {
    私有静态最终长serialVersionUID=-4551741356974797330L;
    公共静态最终字符串LABELID=“ls:LABELID”;
    公共CustomSchema(){
    超级(“cusprop”);
    }
    public void addLabelId(字符串labelId){
    XmpArray数组=新的XmpArray(XmpArray.UNORDERED);
    add(labelId);
    setProperty(LABELID,数组);
    }
    public void addLabelArr(字符串tagId,字符串[]tagValue){
    XmpArray数组=新的XmpArray(XmpArray.ORDERED);
    对于(int i=0;i
    生成的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>
    
    
    啊
    arr1
    
    我想知道,如果这个结构也可以定制。 比如说,

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

    为了获得上述结构,我需要做什么??是否有可用的示例?

    如iText邮件列表上用手和脚解释的:您只能从信息字典中为PDF/A中描述的元数据创建XMP流。没有规范将“自定义”数据从信息字典映射到XMP,原因很简单,数据是“自定义”的。您需要使用定制的XmpSchema创建XMP流,该XmpSchema由您按照满足定制需求的方式开发。