使用iTextJava库提取PDF元数据

使用iTextJava库提取PDF元数据,java,pdf,itext,metadata,itext7,Java,Pdf,Itext,Metadata,Itext7,我正在尝试使用Java库获取PDF文件的所有XMP元数据流,以操作PDF文件iText。我写的代码是: package iTextExamples; import java.io.FileOutputStream; import java.io.IOException; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfReader; public class ReadMetadata

我正在尝试使用Java库获取PDF文件的所有XMP元数据流,以操作PDF文件iText。我写的代码是:

package iTextExamples;

import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;

public class ReadMetadata {

    public static void main(String[] args) throws IOException {
        String src = "C:\\Path\\PDF123.pdf";
        
        PdfReader reader = new PdfReader(src);
        PdfDocument doc = new PdfDocument(reader);
        
        System.out.println(doc.getXmpMetadata());
        
        reader.close();
    }

}

我得到的结果是NULL,我不知道为什么。

与获取NULL的问题无关,但是
doc.getXmpMetadata()
返回一个字节数组。因此,您将无法使用打印其内容

System.out.println(doc.getXmpMetadata());
相反,您必须执行以下操作:

byte[]xmp=doc.getXmpMetadata();
字符串xmpString=新字符串(xmp,StandardCharsets.UTF_8);
System.out.println(xmpString);
关于空值问题:

我假设您正在尝试获取文档级XMP元数据。确保您的PDF文件实际上包含XMP元数据流。如果不是,则应为null

您可以使用能够显示XMP的PDF查看器或PDF对象查看器进行验证。XMP元数据流位于文档
目录
字典的
元数据
条目中: