Generate .docx from HTML with Base64 images with docx4j

4.9k Views Asked by At

I'm trying to generate a .docx from a HTML String with docx4j in Java, which contains Base64 images inside. At the moment, I'm being able to generate the Word and download it (inside a Vaadin project), but the images doesn't insert properly. However, if I put the HTML code into a index.html page, they do show correctly!

The code I'm using is this:

try{
    String html = "<html xmlns='http://www.w3.org/1999/xhtml'><head><style type='text/css'>.p-nombreProceso {   font-family: Arial;     font-size: 48px;    color: magenta;     text-align: center; } .li-seccion {     font-family: Arial; } .a-seccion {  font-family: Arial; } .p-tituloSeccion {    font-family: Arial;     font-size: 18px;    color: #e06666; } .p-subtitulo {    font-family: Arial;     font-size: 16px;    color: #434343;     font-weight: bold; } .p-subtitulo2 {    font-family: Arial;     font-size: 14px;    color: #434343;     font-weight: bold; } .table-default {   width: 100%;    border: none;   empty-cells: show; } .th-default {  background: #e06666;    text-align: center;     vertical-align: middle;     height: 30px;   font-family: Arial;     font-size: 14px;    color: white;   font-weight: bold; } .td-default-par {  background: #e0bbbb;    text-align: center;     vertical-align: middle;     height: 30px;   font-family: Arial;     font-size: 12px;    color: black; } .td-default-impar {     color: black; } .img-default {  margin: 0 auto;     display: block;     height: auto;   max-width: 100%; } .img-diagrama {  margin: 0 auto;     display: block;     height: auto;   max-width: 100%; } </style><meta content='text/html' http-equiv='Content-Type' charset='UTF-8'></head><body bgcolor='#F0F0F0' style='margin:10px'><div style='margin:auto;padding:10px;background-color:white;width:700px;'><p class='p-nombreProceso'>Comenzar el día</p><ol class='olIndice'><li class='li-seccion'><a class='a-seccion' href='#descripcionDelProceso'>DESCRIPCIÓN DEL PROCESO</a></li><li class='li-seccion'><a class='a-seccion' href='#duenoDelProceso'>DUEÑO DEL PROCESO</a></li><li class='li-seccion'><a class='a-seccion' href='#participantes'>PARTICIPANTES</a></li><li class='li-seccion'><a class='a-seccion' href='#diagramaDelProceso'>DIAGRAMA DEL PROCESO</a></li><li class='li-seccion'><a class='a-seccion' href='#catalogoDeElementos'>CATÁLOGO DE ELEMENTOS</a></li><li class='li-seccion'><a class='a-seccion' href='#actividades'>ACTIVIDADES</a></li></ol><a name='descripcionDelProceso'><p class='p-tituloSeccion'>1. DESCRIPCIÓN DEL PROCESO</p></a><div><p><span style='background-color:transparent; color:#434343; font-family:arial; font-size:15px'>Phasellus ut arcu ut nulla dignissim auctor. Etiam sed elit sed diam tempus consectetuer. Proin dignissim, velit a gravida elementum, metus tellus dictum mauris, quis auctor est lectus in sapien. Fusce diam arcu, ultricies non, ullamcorper feugiat, semper quis, tortor. Phasellus egestas feugiat augue. Vestibulum nec wisi. Vivamus lacus wisi, tincidunt quis, vulputate sit amet, placerat vitae, massa.</span></p>  <p><span style='background-color:transparent; color:#434343; font-family:arial; font-size:15px'>Nullam tortor. Fusce malesuada. Quisque dolor mauris, malesuada quis, ultricies non, interdum blandit, lectus. Etiam nulla lacus, nonummy a, blandit sed, pellentesque eget, arcu. Phasellus id pede. Vivamus tortor nibh, tempus auctor, interdum a, faucibus ut, mi. Aliquam tincidunt turpis eleifend orci. Mauris at odio vel metus ullamcorper blandit. Nullam tortor.</span></p> </div><a name='duenoDelProceso'><p class='p-tituloSeccion'>2. DUEÑO DEL PROCESO</p></a><p class='duenoProceso'>santiago.cotto</p><a name='participantes'><p class='p-tituloSeccion'>3. PARTICIPANTES</p></a><a name='diagramaDelProceso'><p class='p-tituloSeccion'>4. DIAGRAMA DEL PROCESO</p></a><div style='width:100%'><img alt='' src='data:image/png;base64,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' class='img-diagrama'/></div><a name='catalogoDeElementos'><p class='p-tituloSeccion'>5. CATÁLOGO DE ELEMENTOS</p></a><p class='p-subtitulo'>ACTIVIDADES</p><table cellspacing='0' cellpadding='0' class='table-default'><thead class='thead-default'><tr class='tr-default'><th class='th-default'>ACTIVIDAD</th><th class='th-default'>DESCRIPCIÓN</th><th class='th-default'>RESPONSABLE</th></tr></thead><tbody class='tbody-default'><tr class='tr-default'><td class='td-default-impar' rowspan='1'>Despertar</td><td class='td-default-impar' rowspan='1'>Abrir los ojos y tomar conciencia áéíóúñ</td><td class='td-default-impar'></td></tr><tr class='tr-default'><td class='td-default-par' rowspan='1'>Desayunar</td><td class='td-default-par' rowspan='1'>Desayuno nutritivo</td><td class='td-default-par'></td></tr><tr class='tr-default'><td class='td-default-impar' rowspan='1'>Volver a dormir</td><td class='td-default-impar' rowspan='1'>Vuelvo a cerrar los ojos y sigo durmiendo</td><td class='td-default-impar'></td></tr><tr class='tr-default'><td class='td-default-par' rowspan='1'>Ir a trabajar</td><td class='td-default-par' rowspan='1'>Ir al trabajo a continuar el día</td><td class='td-default-par'></td></tr></tbody></table><p class='p-subtitulo'>EVENTOS</p><table cellspacing='0' cellpadding='0' class='table-default'><thead class='thead-default'><tr class='tr-default'><th class='th-default'>EVENTO</th><th class='th-default'>DESCRIPCIÓN</th></tr></thead><tbody class='tbody-default'><tr class='tr-default'><td class='td-default-impar'></td><td class='td-default-impar'>Evento de comienzo</td></tr><tr class='tr-default'><td class='td-default-par'></td><td class='td-default-par'>Evento de cierre</td></tr></tbody></table><p class='p-subtitulo'>GATEWAYS</p><table cellspacing='0' cellpadding='0' class='table-default'><thead class='thead-default'><tr class='tr-default'><th class='th-default'>GATEWAYS</th><th class='th-default'>DESCRIPCIÓN</th></tr></thead><tbody class='tbody-default'><tr class='tr-default'><td class='td-default-impar'>¿Seguir durmiendo?</td><td class='td-default-impar'>Evalúo si puedo seguir durmiendo o debo levantarme</td></tr></tbody></table><a name='actividades'><p class='p-tituloSeccion'>6. ACTIVIDADES</p></a><p class='p-subtitulo'>Despertar</p><p class='descripcionActividades'></p><p class='p-subtitulo'>Desayunar</p><p class='descripcionActividades'></p><p class='p-subtitulo'>Volver a dormir</p><p class='descripcionActividades'></p><p class='p-subtitulo'>Ir a trabajar</p><div><p><strong>Dependiendo</strong> <u>c&oacute;mo est&eacute;</u> el d&iacute;a, y <u>cuanto tiempo tenga</u> para llegar al trabajo, puedo ir de alguna de las siguientes maneras:</p> </div><p></p><div><p>Otra opciones posibles podr&iacute;an ser:</p>  <ul>     <li>Ir en auto</li>     <li>Ir en taxi</li>     <li>Ir en bicicleta</li> </ul>";
    WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
    AlternativeFormatInputPart afiPart = new AlternativeFormatInputPart(new PartName("/hw.html"));
    afiPart.setBinaryData(html.getBytes());
    afiPart.setContentType(new ContentType("text/html"));
    Relationship altChunkRel = wordMLPackage.getMainDocumentPart().addTargetPart(afiPart);

    // .. the bit in document body
    CTAltChunk ac = Context.getWmlObjectFactory().createCTAltChunk();
    ac.setId(altChunkRel.getId() );
    wordMLPackage.getMainDocumentPart().addObject(ac);

    // .. content type
    wordMLPackage.getContentTypeManager().addDefaultContentType("html", "text/html");
    SaveToZipFile saver = new SaveToZipFile(wordMLPackage);
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    saver.save(byteArrayOutputStream);
    return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
}catch(Exception ex){
    return new ByteArrayInputStream(new String("ERROR: " + ex.getMessage()).getBytes());
}

Is there any special work that should be done, and I'm not doing?


EDIT:

I'm able to insert images now! Replacing code below WordprocessingMLPackage wordMLPackage line and above SaveToZipFile saver line with this:

StringReader strR = new StringReader(html);
Tidy tid = new Tidy();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
tid.parse(strR, baos);
html = baos.toString();
XHTMLImporterImpl xHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent().addAll(xHTMLImporter.convert(html, null));

But now, the encoding isn't working properly: things like &aacute;, &ntilde; and &iquest; simply are not shown, instead of showing the proper characters (á, ñ and ¿ respectively). How should I make this work?

1

There are 1 best solutions below

8
On

The issue is with Word rather than docx4j.

Microsoft Word doesn't support embedded data when it comes to importing XHTML. If you save your html string in a separate HTML file and try to open it in Word, you will see that it brings in the file with its formatting present, but the images are broken.

A better solution would be for your code to import the XHTML "natively" (rather than as an AltChunk: @JasonPlutext provides a link for doing that in his comment), and then bring the images in using custom code: i.e. extract and decode the Base64 content so you have binary data, and then pull that into Word using the docx4j API (BinaryPartAbstractImage.createImagePart() or similar).