2017-06-08 3 views
1

J'essaie de définir les métadonnées (telles que Title ou Author) dans un fichier PDF que je crée avec FlyingSaucer (https://github.com/flyingsaucerproject/flyingsaucer) à partir d'un fichier HTML.Comment définir metada en PDF en cours de création avec FlyingSaucer

Voici le code qui crée le fichier PDF:

ByteArrayOutputStream out = new ByteArrayOutputStream(); 

    ITextRenderer renderer = new ITextRenderer(); 
    renderer.getFontResolver().addFont("fonts/VERDANA.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.getFontResolver().addFont("fonts/VERDANAB.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.getFontResolver().addFont("fonts/VERDANAI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.getFontResolver().addFont("fonts/VERDANAZ.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.setDocumentFromString(... HTML as a String ...); 
    renderer.layout(); 
    renderer.createPDF(out); 

    FileOutputStream fos = new FileOutputStream(pathPdf); 

    PdfReader reader = new PdfReader(baos.toByteArray()); 
    PdfStamper stamper = new PdfStamper(reader, fos); 

    ... sets watermark image if available ... 

    stamper.close(); 
    reader.close(); 

J'ai essayé d'obtenir le PdfDictionary et la mise en métadonnées, obtenir la carte d'information et la mise en métadonnées, et d'obtenir le document pour définir les métadonnées, mais je ne peux pas le faire fonctionner.

Répondre

1

trouvé la solution:

ByteArrayOutputStream out = new ByteArrayOutputStream(); 

    ITextRenderer renderer = new ITextRenderer(); 
    renderer.getFontResolver().addFont("fonts/VERDANA.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.getFontResolver().addFont("fonts/VERDANAB.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.getFontResolver().addFont("fonts/VERDANAI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.getFontResolver().addFont("fonts/VERDANAZ.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    renderer.setDocumentFromString(... HTML as a String ...); 
    renderer.layout(); 
    renderer.createPDF(out); 

    FileOutputStream fos = new FileOutputStream(pathPdf); 

    PdfReader reader = new PdfReader(baos.toByteArray()); 
    PdfStamper stamper = new PdfStamper(reader, fos); 

    ... sets watermark image if available ... 

    PdfDictionary info = reader.getTrailer().getAsDict(PdfName.INFO); 
    info.getKeys().forEach((k) -> { 
     System.out.println("k: " + k + ", v:" + info.get((PdfName) k)); 
    }); 
    info.put(PdfName.TITLE, new PdfString("Title", PdfObject.TEXT_UNICODE)); 
    info.put(PdfName.AUTHOR, new PdfString("Author", PdfObject.TEXT_UNICODE)); 

    stamper.close(); 
    reader.close();