2016-12-11 3 views
0

J'ai utilisé le lien ci-dessous pour obtenir les métadonnées dans itext 5 en utilisant: Get and set metadata for itext pdf documentObtenez des métadonnées personnalisées pour itext 7 document pdf

Actuellement, je peux obtenir des métadonnées dans itext7 trop en utilisant l'extrait:

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

Je ne sais pas comment obtenir des propriétés personnalisées en utilisant la même chose. Je peux définir des métadonnées personnalisées à l'aide:

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

Comment obtenir cette valeur sans programatically coder en dur le nom de clé? Aussi, est-il un moyen d'obtenir ces valeurs de métadonnées (y compris les métadonnées personnalisées) sans écrire:

getAuthor, getCreator, etc? 

Répondre

1

Pas de soucis, a obtenu la réponse. n'a pas réalisé plus tôt que:

PdfDictionary map = info.getPdfObject(); 

Retourne un objet de type de carte. Analyser la carte pour obtenir toutes les paires clé-valeur, y compris les propriétés personnalisées. Vous trouverez ci-dessous l'extrait de code complet:

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(); 
    } 
}