2016-12-11 6 views
0

Я использовал ссылку приведенную ниже для получения метаданных в IText 5 с помощью: Get and set metadata for itext pdf documentПолучить пользовательские метаданные для IText 7 Документ PDF

В настоящее время я могу получить метаданные в itext7 тоже используя фрагмент кода:

PdfDocument pdfDoc = new PdfDocument(new PdfReader(src)); 
PdfDocumentInfo info = pdfDoc.getDocumentInfo(); 
info.getAuthor(); 
info.getCreator(); 
info.getProducer(); 

Я не знаю, как получить пользовательские свойства, используя то же самое. я могу установить пользовательские метаданные с помощью:

pdfDoc.getDocumentInfo().setMoreInfo("Test", "test"); 

Как получить это значение программно без жесткого кодирования имя ключа? Кроме того, есть ли способ, чтобы получить эти значения метаданных (в том числе пользовательских метаданных) без фактического написания:

getAuthor, getCreator, etc? 

ответ

1

Не беспокойтесь, получил ответ. не понимал раньше, что:

PdfDictionary map = info.getPdfObject(); 

возвращает объект типа карты. Разработал карту, чтобы получить все пары ключ-значение, включая настраиваемые свойства. Ниже приведен полный фрагмент кода:

import com.itextpdf.kernel.pdf.PdfDictionary; 
import com.itextpdf.kernel.pdf.PdfDocument; 
import com.itextpdf.kernel.pdf.PdfDocumentInfo; 
import com.itextpdf.kernel.pdf.PdfName; 
import com.itextpdf.kernel.pdf.PdfObject; 
import com.itextpdf.kernel.pdf.PdfReader; 

import java.io.File; 
import java.io.IOException; 
import java.util.Map.Entry; 

public class GetInfo { 

    public static final String SRC = "hello.pdf"; 

    public static void main(String[] args) throws IOException { 
     File file = new File(SRC); 
     file.getParentFile().mkdirs(); 
     new GetInfo().manipulatePdf(SRC); 
    } 

    public void manipulatePdf(String src) throws IOException { 
     PdfDocument pdfDoc = new PdfDocument(new PdfReader(src)); 
     PdfDocumentInfo info = pdfDoc.getDocumentInfo(); 
     PdfDictionary map = info.getPdfObject(); 
     for(Entry<PdfName, PdfObject> entry : map.entrySet()){ 
      System.out.println(entry.getKey().getValue() + " - " + entry.getValue()); 
     } 
     pdfDoc.close(); 
    } 
}