Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2011, 04:45
Avatar de huspy
huspy
 
Fecha de Ingreso: diciembre-2008
Ubicación: Málaga, España
Mensajes: 120
Antigüedad: 15 años, 10 meses
Puntos: 2
Metadatos en PDF con librería iText

Buenas a todos!

Estoy desarrollando en una aplicación en Swing y tengo generado un PDF como un array de bytes (byte[]).

Lo que quiero es insertar METADATOS al PDF y usando la librería iText he visto que se usa de esta forma:

Código Java:
Ver original
  1. ...
  2. ByteArrayOutputStream baos = generaPDF(...);
  3. byte[] pdf = baos.toByteArray();
  4. PdfReader reader = new PdfReader(pdf);
  5.  
  6. //Aquí está mi problema con new FileOutputStream(C:/)
  7. PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(C:/));
  8.  
  9. HashMap info = reader.getInfo();
  10. info.put("Title", "Hello World stamped");
  11. info.put("Subject", "Hello World with changed metadata");
  12. info.put("Keywords", "iText in Action, PdfStamper");
  13. info.put("Creator", "Silly standalone example");
  14. info.put("Author", "Also Bruno Lowagie");
  15.  
  16. stamper.setMoreInfo(info);
  17. stamper.close();
  18. ...

Esto me funciona perfectamente, pero el problema es que no puedo generar un archivo PDF como tal, en la máquina del usuario y haciendo "new FileOutputStream(C:/)" se genera un archivo.

Por lo tanto he probado con la solución que comento a continuación, pero no me funciona, ¡no me genera los METADATOS!:

Código Java:
Ver original
  1. ...
  2. ByteArrayOutputStream baos = generaPDF(...);
  3. byte[] pdf = baos.toByteArray();
  4. PdfReader reader = new PdfReader(pdf);
  5.  
  6. //Lo que quiero es vez de que me genere en un archivo lo inserte en un OutputStream
  7. PdfStamper stamper = new PdfStamper(reader, baos);
  8.  
  9. //Y después hacer esto
  10. pdf = baos.toByteArray();
  11.  
  12. HashMap info = reader.getInfo();
  13. info.put("Title", "Hello World stamped");
  14. info.put("Subject", "Hello World with changed metadata");
  15. info.put("Keywords", "iText in Action, PdfStamper");
  16. info.put("Creator", "Silly standalone example");
  17. info.put("Author", "Also Bruno Lowagie");
  18.  
  19. stamper.setMoreInfo(info);
  20. stamper.close();
  21. ...

¿¿¿Sabéis porque de esa manera no me guarada los metadatos???

Muchas Gracias por todo y Saludos!!!!
__________________
"Lo escuché y lo olvidé, lo vi y lo entendí, lo hice y lo aprendí." (Confucio)