2013-07-15 19 views
0

我試圖將圖像添加到我想從docx4j創建Word文檔中添加圖片的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; 
} 
} 

當編譯我收到以下錯誤......

異常在線程「主要」 java.lang.NoClassDefFoundError:組織/阿帕奇/ xmlgraphics /圖像/裝載機/ ImageContext

我的圖像文件是好的,但得到這個電子恐怖..什麼可能是概率?

回答

1

docx4j有依賴關係。

其中之一就是:

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

你需要把它添加到您的類路徑。

+0

我在類路徑中添加了jar,但現在我得到以下異常.... openpackagingexceptions:檢查圖像格式錯誤..由java.io.EOFException導致 – user1901079

+0

您必須修復您已複製的代碼/粘貼,以便您的可變字節實際上填充了圖像! – JasonPlutext

+0

我修復了IOUtils import中的問題。我們需要使用commons.io.IOUtils.tobytearray(is)來代替sun.misc.IOutils – user1901079