He creado un documento docx simple, utilizando Java POI 3.7. XWPF. Luego, agregué una imagen por usando el Método XWPFDocument.addpicture(byte[] arg0, int arg1)
.cómo agregar una imagen a un documento .docx con Apache POI XWPF en java
XWPFDocument docx = new XWPFDocument();
XWPFParagraph par = docx.createParagraph();
XWPFRun run = par.createRun();
run.setText("Hello, World. This is my first java generated docx-file. Have fun.");
run.setFontSize(13);
InputStream pic = new FileInputStream("logo.jpg");
byte [] picbytes = IOUtils.toByteArray(pic);
docx.addPicture(picbytes, Document.PICTURE_TYPE_JPEG);
Dado que el tamaño de archivo del docx crece, la imagen se agregó "físicamente" al documento; pero no se muestra en absoluto en MS Word. Parece que hay una referencia a la imagen que falta en el documento.
¿Cuál es la manera de hacer esto? ¿Cómo se maneja la imagen con Apache POI? Y donde hay más tutoriales en la web, casi no hay documentos o tutoriales para XWPF, que explica el manejo de párrafos, ejecuciones, etc.
Lo único que encontré sobre esto es aquí: https://issues.apache.org/bugzilla/show_bug.cgi?id=49765 pero no lo hace ayuda en absoluto.
Muchas gracias de antemano.
¿Has probado con POI 3.8 beta 4? Algunos errores de imagen se han solucionado desde 3.7 final, por lo que vale la pena ver si la actualización resuelve su problema – Gagravarr
Sí, la única diferencia es que en POI 3.8 beta 4 se cambia el nombre del método XWPFDocument.addPicture (byte [] arg0, int arg1) a XWPFDocument.addPictureData (byte [] arg0, int arg1) - quizás para delinear que este método solo agrega los datos de la imagen al documento, pero no agrega la imagen en un párrafo que se mostrará en palabra, etc. La pregunta de cómo esto sigue sin respuesta. Creo que un objeto CTPicture (org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture) debe crearse y agregarse a un párrafo; sin embargo, no he descubierto cómo hacerlo. –
¿Ha intentado llamar a [addPicture] (http://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFRun.html#addPicture%28java.io.InputStream,%20int,%20java.lang .String,% 20int,% 20int% 29) en la ejecución de texto donde desea que aparezca su imagen? – Gagravarr