добавление изображения в документ Word с помощью docx4j

Я пытаюсь добавить изображение в документ Word, который хочу создать из docx4j ..

Вот мой код ..

package presaleshelperapplication;

import java.io.ByteArrayOutputStream;
import org.docx4j.dml.wordprocessingDrawing.Inline;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage;
 import sun.misc.IOUtils;


 public class PreSalesHelperApplication {

/**
 * @param args the command line arguments
 */
 public static void main(String[] args) throws Exception {
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
//wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Title", "Hello World");
//wordMLPackage.getMainDocumentPart().addParagraphOfText("Text");
 java.io.InputStream is = new           java.io.FileInputStream("/D:/Development/PreSalesData/sample.jpg");
 // commons-io.jar
 ByteArrayOutputStream baos = new ByteArrayOutputStream();
 byte[] bytes = baos.toByteArray();


 String filenameHint = null;
 String altText = null;
 int id1 = 0;
 int id2 = 1;
 org.docx4j.wml.P p = newImage( wordMLPackage, bytes,filenameHint, altText,id1, id2,6000  );
 // Now add our p to the document
 wordMLPackage.getMainDocumentPart().addObject(p);
 wordMLPackage.save(new java.io.File("helloworld.docx") );
 is.close();
}



 public static org.docx4j.wml.P newImage( WordprocessingMLPackage wordMLPackage,
    byte[] bytes,
    String filenameHint, String altText, 
    int id1, int id2, long cx) throws Exception {

    BinaryPartAbstractImage imagePart =             BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);

    Inline inline = imagePart.createImageInline(filenameHint, altText,id1, id2, cx,false);

// Now add the inline in w:p/w:r/w:drawing
    org.docx4j.wml.ObjectFactory factory = new org.docx4j.wml.ObjectFactory();
    org.docx4j.wml.P  p = factory.createP();
    org.docx4j.wml.R  run = factory.createR();             
    p.getContent().add(run);       
    org.docx4j.wml.Drawing drawing = factory.createDrawing();               
    run.getContent().add(drawing);               
    drawing.getAnchorOrInline().add(inline);

    return p;
 }
 }

При компиляции я получаю следующую ошибку ...

Исключение в потоке "main" java.lang.NoClassDefFoundError: org / apache / xmlgraphics / image / loader / ImageContext

Мой файл изображения в порядке, но появляется эта ошибка ... в чем может быть проблема?


person user1901079    schedule 15.07.2013    source источник


Ответы (1)


docx4j имеет зависимости.

Один из них является:

<dependency>
    <groupId>org.apache.xmlgraphics</groupId>
    <artifactId>xmlgraphics-commons</artifactId>
    <version>1.5</version>
</dependency>

Вам нужно добавить это в свой путь к классу.

person JasonPlutext    schedule 15.07.2013
comment
Я добавил банку в путь к классам, но теперь я получаю следующее исключение .... openpackagingexceptions: Ошибка при проверке формата изображения .. вызвано java.io.EOFException - person user1901079; 16.07.2013
comment
Вам нужно будет исправить этот код, который вы скопировали / вставили, чтобы байты вашей переменной фактически были заполнены изображением! - person JasonPlutext; 16.07.2013
comment
Я исправил проблему, проблема заключалась в импорте IOUtils. Нам нужно использовать commons.io.IOUtils.tobytearray (is) вместо sun.misc.IOutils - person user1901079; 16.07.2013
comment
Святое дерьмо. Большое спасибо за это! На самом деле я работаю с docx4j с помощью ColdFusion, и возникшая ошибка не помогла. Я добавил соответствующий файл для зависимости, и он сразу заработал. Ух! - person sugardaddy; 17.09.2018