org.docx4j.dml.wordprocessingDrawing.Inline Java Examples

The following examples show how to use org.docx4j.dml.wordprocessingDrawing.Inline. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: Docx4jTest.java    From docx4j-template with Apache License 2.0 7 votes vote down vote up
/**
 * 创建包含图片的内容
 *
 * @param word
 * @param sourcePart
 * @param imageFilePath
 * @return
 * @throws Exception
 */
public static P newImage(WordprocessingMLPackage word,
                         Part sourcePart,
                         String imageFilePath) throws Exception {
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage
            .createImagePart(word, sourcePart, new File(imageFilePath));
    //随机数ID
    int id = (int) (Math.random() * 10000);
    //这里的id不重复即可
    Inline inline = imagePart.createImageInline("image", "image", id, id * 2, false);

    Drawing drawing = factory.createDrawing();
    drawing.getAnchorOrInline().add(inline);

    R r = factory.createR();
    r.getContent().add(drawing);

    P p = factory.createP();
    p.getContent().add(r);

    return p;
}
 
Example #2
Source File: WmlElementUtils.java    From docx4j-template with Apache License 2.0 6 votes vote down vote up
/**
    * 插入图片
    * @param wPackage
    * @param bm
    * @param file
    * @throws Exception 
    */
public static void addImage(WordprocessingMLPackage wPackage, CTBookmark bm, String file) throws Exception {
	// 这儿可以对单个书签进行操作,也可以用一个map对所有的书签进行处理
	// 获取该书签的父级段落
	P p = (P) (bm.getParent());
	// R对象是匿名的复杂类型,然而我并不知道具体啥意思,估计这个要好好去看看ooxml才知道
	R run = factory.createR();
	// 读入图片并转化为字节数组,因为docx4j只能字节数组的方式插入图片
        byte[] bytes = null;//FileUtil.getByteFormBase64DataByImage(file);

        //	InputStream is = new FileInputStream;
       //	byte[] bytes = IOUtils.toByteArray(inputStream);
	//  byte[] bytes = FileUtil.getByteFormBase64DataByImage("");
	// 开始创建一个行内图片
	BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wPackage, bytes);
	// createImageInline函数的前四个参数我都没有找到具体啥意思,,,,
	// 最有一个是限制图片的宽度,缩放的依据
	Inline inline = imagePart.createImageInline(null, null, 0, 1, false, 0);
	// 获取该书签的父级段落
	// drawing理解为画布?
	Drawing drawing = factory.createDrawing();
	drawing.getAnchorOrInline().add(inline);
	run.getContent().add(drawing);
	p.getContent().add(run);
}
 
Example #3
Source File: WmlElementUtils.java    From docx4j-template with Apache License 2.0 6 votes vote down vote up
/**
 * @Description: 添加图片到段落
 */
public static void addImageToPara(WordprocessingMLPackage wordMLPackage, ObjectFactory factory, P paragraph,
        String filePath, String content, RPr rpr, String altText, int id1, int id2) throws Exception {
    R run = factory.createR();
    if (content != null) {
        Text text = factory.createText();
        text.setValue(content);
        text.setSpace("preserve");
        run.setRPr(rpr);
        run.getContent().add(text);
    }

    InputStream is = new FileInputStream(filePath);
    byte[] bytes = IOUtils.toByteArray(is);
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
    Inline inline = imagePart.createImageInline(filePath, altText, id1, id2, false);
    Drawing drawing = factory.createDrawing();
    drawing.getAnchorOrInline().add(inline);
    run.getContent().add(drawing);
    paragraph.getContent().add(run);
}
 
Example #4
Source File: Docx4j_工具类_S3_Test.java    From docx4j-template with Apache License 2.0 6 votes vote down vote up
/**
 * @Description: 添加图片到段落
 */
public void addImageToPara(WordprocessingMLPackage wordMLPackage,
        ObjectFactory factory, P paragraph, String filePath,
        String content, RPr rpr, String altText, int id1, int id2)
        throws Exception {
    R run = factory.createR();
    if (content != null) {
        Text text = factory.createText();
        text.setValue(content);
        text.setSpace("preserve");
        run.setRPr(rpr);
        run.getContent().add(text);
    }

    InputStream is = new FileInputStream(filePath);
    byte[] bytes = IOUtils.toByteArray(is);
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage
            .createImagePart(wordMLPackage, bytes);
    Inline inline = imagePart.createImageInline(filePath, altText, id1,
            id2, false);
    Drawing drawing = factory.createDrawing();
    drawing.getAnchorOrInline().add(inline);
    run.getContent().add(drawing);
    paragraph.getContent().add(run);
}
 
Example #5
Source File: Docx4j_创建表格_S5_Test.java    From docx4j-template with Apache License 2.0 6 votes vote down vote up
public P newImage(WordprocessingMLPackage wordMLPackage,  
        ObjectFactory factory, 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  
    P p = factory.createP();  
    R run = factory.createR();  
    p.getContent().add(run);  
    Drawing drawing = factory.createDrawing();  
    run.getContent().add(drawing);  
    drawing.getAnchorOrInline().add(inline);  
    return p;  
}
 
Example #6
Source File: AddingAnInlineImage.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
/**
 *  创建一个对象工厂并用它创建一个段落和一个可运行块R.
 *  然后将可运行块添加到段落中. 接下来创建一个图画并将其添加到可运行块R中. 最后我们将内联
 *  对象添加到图画中并返回段落对象.
 *
 * @param   inline 包含图片的内联对象.
 * @return  包含图片的段落
 */
private static P addInlineImageToParagraph(Inline inline) {
    // 添加内联对象到一个段落中
    ObjectFactory factory = new ObjectFactory();
    P paragraph = factory.createP();
    R run = factory.createR();
    paragraph.getContent().add(run);
    Drawing drawing = factory.createDrawing();
    run.getContent().add(drawing);
    drawing.getAnchorOrInline().add(inline);
    return paragraph;
}
 
Example #7
Source File: Docx4jExample.java    From tutorials with MIT License 5 votes vote down vote up
private static P addImageToParagraph(Inline inline) {
    ObjectFactory factory = new ObjectFactory();
    P p = factory.createP();
    R r = factory.createR();
    p.getContent().add(r);
    Drawing drawing = factory.createDrawing();
    r.getContent().add(drawing);
    drawing.getAnchorOrInline().add(inline);
    return p;
}
 
Example #8
Source File: AbstractInliner.java    From yarg with Apache License 2.0 5 votes vote down vote up
@Override
public void inlineToDocx(WordprocessingMLPackage wordPackage, Text text, Object paramValue, Matcher paramsMatcher) {
    try {
        Image image = new Image(paramValue, paramsMatcher);
        if (image.isValid()) {
            Part part = resolveTextPartForDOCX(text, wordPackage);
            BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordPackage, part, image.imageContent);
            int originalWidth = imagePart.getImageInfo().getSize().getWidthPx();
            int originalHeight = imagePart.getImageInfo().getSize().getHeightPx();

            double widthScale = (double) image.width / (double) originalWidth;
            double heightScale = (double) image.height  / (double) originalHeight;
            double actualScale = Math.min(widthScale, heightScale);

            long targetWidth = Math.round(originalWidth * actualScale);
            long targetHeight = Math.round(originalHeight * actualScale);

            Inline inline = imagePart.createImageInline("", "", docxUniqueId1++, docxUniqueId2++,
                    XlsxUtils.convertPxToEmu(targetWidth), XlsxUtils.convertPxToEmu(targetHeight), false);

            org.docx4j.wml.Drawing drawing = new org.docx4j.wml.ObjectFactory().createDrawing();
            R run = (R) text.getParent();
            run.getContent().add(drawing);
            drawing.getAnchorOrInline().add(inline);
            text.setValue("");
        }
    } catch (Exception e) {
        throw new ReportFormattingException("An error occurred while inserting bitmap to docx file", e);
    }
}
 
Example #9
Source File: ImageResolver.java    From docx-stamper with MIT License 5 votes vote down vote up
public static R createRunWithImage(WordprocessingMLPackage wordMLPackage, byte[] bytes, String filenameHint, String altText, Integer maxWidth) throws Exception {
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);

    // creating random ids assuming they are unique
    // id must not be too large, otherwise Word cannot open the document
    int id1 = random.nextInt(100000);
    int id2 = random.nextInt(100000);
    if (filenameHint == null) {
        filenameHint = "dummyFileName";
    }
    if (altText == null) {
        altText = "dummyAltText";
    }

    Inline inline;
    if (maxWidth == null) {
        inline = imagePart.createImageInline(filenameHint, altText,
                id1, id2, false);
    } else {
        inline = imagePart.createImageInline(filenameHint, altText,
                id1, id2, false, maxWidth);
    }

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

    return run;

}
 
Example #10
Source File: LongTailHelper.java    From docx-html-editor with GNU Affero General Public License v3.0 5 votes vote down vote up
@Override
public List<Object> apply(Object o) {

	if (o instanceof Inline) {
		anchorOrInline = o;				
	} else if (o instanceof Anchor) {
		anchorOrInline = o;				
	} else if (o instanceof CTBlip) {
		blips.add((CTBlip)o);
	}
	
	return null;
}
 
Example #11
Source File: Docx4J_简单例子.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
public P newImage(WordprocessingMLPackage wordMLPackage,
		ObjectFactory factory, Part sourcePart, byte[] bytes,
		String filenameHint, String altText, int id1, int id2,
		JcEnumeration jcEnumeration) throws Exception {
	BinaryPartAbstractImage imagePart = BinaryPartAbstractImage
			.createImagePart(wordMLPackage, sourcePart, bytes);
	Inline inline = imagePart.createImageInline(filenameHint, altText, id1,
			id2, false);
	P p = factory.createP();
	R run = factory.createR();
	p.getContent().add(run);
	Drawing drawing = factory.createDrawing();
	run.getContent().add(drawing);
	drawing.getAnchorOrInline().add(inline);
	PPr pPr = p.getPPr();
	if (pPr == null) {
		pPr = factory.createPPr();
	}
	Jc jc = pPr.getJc();
	if (jc == null) {
		jc = new Jc();
	}
	jc.setVal(jcEnumeration);
	pPr.setJc(jc);
	p.setPPr(pPr);
	return p;
}
 
Example #12
Source File: AddingAnInlineImageToTable.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
/**
 * 使用给定的文件创建一个内联图片.
 * 跟前面例子中一样, 我们将文件转换成字节数组, 并用它创建一个内联图片.
 *
 * @param file
 * @return
 * @throws Exception
 */
private static Inline createInlineImage(File file) throws Exception {
    byte[] bytes = convertImageToByteArray(file);
 
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
 
    int docPrId = 1;
    int cNvPrId = 2;
 
    return imagePart.createImageInline("Filename hint", "Alternative text", docPrId, cNvPrId, false);
}
 
Example #13
Source File: AddingAnInlineImageToTable.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
/**
 *  向新的段落中添加内联图片并返回这个段落.
 *  这个方法与前面例子中的方法没有区别.
 * @param inline
 * @return
 */
private static P addInlineImageToParagraph(Inline inline) {
    // Now add the in-line image to a paragraph
    ObjectFactory factory = new ObjectFactory();
    P paragraph = factory.createP();
    R run = factory.createR();
    paragraph.getContent().add(run);
    Drawing drawing = factory.createDrawing();
    run.getContent().add(drawing);
    drawing.getAnchorOrInline().add(inline);
    return paragraph;
}
 
Example #14
Source File: ParagraphUtils.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
public static P addInlineImageToParagraph(Inline inline) {
    // Now add the in-line image to a paragraph
    P paragraph = factory.createP();
    R run = factory.createR();
    paragraph.getContent().add(run);
    Drawing drawing = factory.createDrawing();
    run.getContent().add(drawing);
    drawing.getAnchorOrInline().add(inline);
    return paragraph;
}
 
Example #15
Source File: AddingAnInlineImage.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
/**
 *  Docx4j拥有一个由字节数组创建图片部件的工具方法, 随后将其添加到给定的包中. 为了能将图片添加
 *  到一个段落中, 我们需要将图片转换成内联对象. 这也有一个方法, 方法需要文件名提示, 替换文本, 
 *  两个id标识符和一个是嵌入还是链接到的指示作为参数.
 *  一个id用于文档中绘图对象不可见的属性, 另一个id用于图片本身不可见的绘制属性. 最后我们将内联
 *  对象添加到段落中并将段落添加到包的主文档部件.
 *
 *  @param wordMLPackage 要添加图片的包
 *  @param bytes         图片对应的字节数组
 *  @throws Exception    不幸的createImageInline方法抛出一个异常(没有更多具体的异常类型)
 */
private static void addImageToPackage(WordprocessingMLPackage wordMLPackage,
                        byte[] bytes) throws Exception {
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
 
    int docPrId = 1;
    int cNvPrId = 2;
    Inline inline = imagePart.createImageInline("Filename hint","Alternative text", docPrId, cNvPrId, false);
 
    P paragraph = addInlineImageToParagraph(inline);
 
    wordMLPackage.getMainDocumentPart().addObject(paragraph);
}
 
Example #16
Source File: Docx4J_简单例子2.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
public P newImage(WordprocessingMLPackage wordMLPackage,  
        ObjectFactory factory, Part sourcePart, byte[] bytes,  
        String filenameHint, String altText, int id1, int id2,  
        JcEnumeration jcEnumeration) throws Exception {  
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage  
            .createImagePart(wordMLPackage, sourcePart, bytes);  
    Inline inline = imagePart.createImageInline(filenameHint, altText, id1,  
            id2, false);  
    P p = factory.createP();  
    R run = factory.createR();  
    p.getContent().add(run);  
    Drawing drawing = factory.createDrawing();  
    run.getContent().add(drawing);  
    drawing.getAnchorOrInline().add(inline);  
    PPr pPr = p.getPPr();  
    if (pPr == null) {  
        pPr = factory.createPPr();  
    }  
    Jc jc = pPr.getJc();  
    if (jc == null) {  
        jc = new Jc();  
    }  
    jc.setVal(jcEnumeration);  
    pPr.setJc(jc);  
    p.setPPr(pPr);  
      
    PBdr pBdr=pPr.getPBdr();  
    if(pBdr==null){  
        pBdr=factory.createPPrBasePBdr();  
    }  
    CTBorder value=new CTBorder();  
    value.setVal(STBorder.SINGLE);  
    value.setColor("000000");  
    value.setSpace(new BigInteger("0"));  
    value.setSz(new BigInteger("3"));  
    pBdr.setBetween(value);  
    pPr.setPBdr(pBdr);  
    setParagraphSpacing(factory, p, jcEnumeration, "0", "0");  
    return p;  
}
 
Example #17
Source File: Docx4J_简单例子2.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
public P createImageParagraph(WordprocessingMLPackage wordMLPackage,  
        ObjectFactory factory,P p,String fileName, String content,byte[] bytes,  
        JcEnumeration jcEnumeration) throws Exception {  
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage  
            .createImagePart(wordMLPackage, bytes);  
    Inline inline = imagePart.createImageInline(fileName, "这是图片", 1,  
            2, false);  
    Text text = factory.createText();  
    text.setValue(content);  
    text.setSpace("preserve");  
    R run = factory.createR();  
    p.getContent().add(run);  
    run.getContent().add(text);  
    Drawing drawing = factory.createDrawing();  
    run.getContent().add(drawing);  
    drawing.getAnchorOrInline().add(inline);  
    PPr pPr = p.getPPr();  
    if (pPr == null) {  
        pPr = factory.createPPr();  
    }  
    Jc jc = pPr.getJc();  
    if (jc == null) {  
        jc = new Jc();  
    }  
    jc.setVal(jcEnumeration);  
    pPr.setJc(jc);  
    p.setPPr(pPr);  
    setParagraphSpacing(factory, p, jcEnumeration, "0", "0");  
    return p;  
}
 
Example #18
Source File: Docx4J_例子2.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
public P createImageParagraph(WordprocessingMLPackage wordMLPackage,
		ObjectFactory factory, P p, String fileName, String content,
		byte[] bytes, JcEnumeration jcEnumeration) throws Exception {
	BinaryPartAbstractImage imagePart = BinaryPartAbstractImage
			.createImagePart(wordMLPackage, bytes);
	Inline inline = imagePart.createImageInline(fileName, "这是图片", 1, 2,
			false);
	Text text = factory.createText();
	text.setValue(content);
	text.setSpace("preserve");
	R run = factory.createR();
	p.getContent().add(run);
	run.getContent().add(text);
	Drawing drawing = factory.createDrawing();
	run.getContent().add(drawing);
	drawing.getAnchorOrInline().add(inline);
	PPr pPr = p.getPPr();
	if (pPr == null) {
		pPr = factory.createPPr();
	}
	Jc jc = pPr.getJc();
	if (jc == null) {
		jc = new Jc();
	}
	jc.setVal(jcEnumeration);
	pPr.setJc(jc);
	p.setPPr(pPr);
	setParagraphSpacing(factory, p, jcEnumeration, true, "0", "0", null,
			null, true, "240", STLineSpacingRule.AUTO);
	return p;
}
 
Example #19
Source File: WordprocessingMLPackageRender.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
public void addImageToPackage(byte[] bytes) throws Exception {  
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wmlPackage, bytes);  
   
    int docPrId = 1;  
    int cNvPrId = 2;  
    Inline inline = imagePart.createImageInline("Filename hint", "Alternative text", docPrId, cNvPrId, false);  
   
    P paragraph = WmlElementUtils.addInlineImageToParagraph(inline);  
   
    wmlPackage.getMainDocumentPart().addObject(paragraph);  
}
 
Example #20
Source File: WmlElementUtils.java    From docx4j-template with Apache License 2.0 5 votes vote down vote up
public static P addInlineImageToParagraph(Inline inline) {
    // 添加内联对象到一个段落中  
    P paragraph = factory.createP();  
    R run = factory.createR();  
    paragraph.getContent().add(run);  
    Drawing drawing = factory.createDrawing();  
    run.getContent().add(drawing);  
    drawing.getAnchorOrInline().add(inline);  
    return paragraph;  
}
 
Example #21
Source File: DocxProducer.java    From OfficeProducer with Apache License 2.0 4 votes vote down vote up
/**
 * 替换书签为图片
 *
 * @param wordMLPackage
 * @param documentPart
 * @param imageParameters
 * @throws Exception
 */
private static void replaceBookMarkWithImage(WordprocessingMLPackage wordMLPackage,
                                             MainDocumentPart documentPart,
                                             Map<String, String> imageParameters)
        throws Exception {
    Document wmlDoc = documentPart.getContents();
    Body body = wmlDoc.getBody();
    // 提取正文中所有段落
    List<Object> paragraphs = body.getContent();
    // 提取书签并创建书签的游标
    RangeFinder rt = new RangeFinder("CTBookmark", "CTMarkupRange");
    new TraversalUtil(paragraphs, rt);

    // 遍历书签
    for (CTBookmark bm : rt.getStarts()) {
        String bookmarkName = bm.getName();
        String imagePath = imageParameters.get(bookmarkName);
        if (imagePath != null) {
            File imageFile = new File(imagePath);
            InputStream imageStream = new FileInputStream(imageFile);
            // 读入图片并转化为字节数组,因为docx4j只能字节数组的方式插入图片
            byte[] bytes = IOUtils.toByteArray(imageStream);
            // 创建一个行内图片
            BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
            // createImageInline函数的前四个参数我都没有找到具体啥意思
            // 最后一个是限制图片的宽度,缩放的依据
            Inline inline = imagePart.createImageInline(null, null, 0, 1, false, 800);
            // 获取该书签的父级段落
            P p = (P) (bm.getParent());
            ObjectFactory factory = new ObjectFactory();
            // 新建一个Run
            R run = factory.createR();
            // drawing 画布
            Drawing drawing = factory.createDrawing();
            drawing.getAnchorOrInline()
                    .add(inline);
            run.getContent()
                    .add(drawing);
            p.getContent()
                    .add(run);
        }
    }
}
 
Example #22
Source File: Conversion.java    From docx4j-export-FO with Apache License 2.0 4 votes vote down vote up
void addDrawing(org.docx4j.wml.Drawing o,
			Object paraParent, Paragraph pdfParagraph) throws Exception {
	
		org.docx4j.wml.Drawing drawing = (org.docx4j.wml.Drawing) o;
		List<Object> list = drawing.getAnchorOrInline();
		if (list.size() != 1
			|| !(list.get(0) instanceof Inline)) {
			//There should not be an Anchor in 'list'
			//because it is not being supported and 
			//RunML.initChildren() prevents it from
			//being assigned to this InlineDrawingML object.
			//See: RunML.initChildren().
			throw new IllegalArgumentException("Unsupported Docx Object = " + o);			
		}
		
		Inline inline = (Inline) list.get(0);
//		if (inline.getExtent() != null) {
//			int cx = Long.valueOf(inline.getExtent().getCx()).intValue();
//			cx = StyleSheet.emuToPixels(cx);
//			int cy = Long.valueOf(inline.getExtent().getCy()).intValue();
//			cy = StyleSheet.emuToPixels(cy);
//			//this.extentInPixels = new Dimension(cx, cy);
//		}
		
		if (inline.getEffectExtent() != null) {
			//this.effectExtent = new CTEffectExtent(inline.getEffectExtent());
		}
		
		if (inline.getGraphic() != null) {
			
			byte[] imagedata = BinaryPartAbstractImage.getImage(wordMLPackage,
					inline.getGraphic() );
			Image img = Image.getInstance( imagedata );
			if (paraParent instanceof Document) {				
				((Document)paraParent).add(img);
			} else if (paraParent instanceof PdfPTable) {				
				((PdfPTable)paraParent).addCell(img);
			} else {
				log.error("Trying to add image to " + paraParent.getClass().getName() );
			}
			
		}
	}
 
Example #23
Source File: Docx4J_例子2.java    From docx4j-template with Apache License 2.0 4 votes vote down vote up
public P newImage(WordprocessingMLPackage wordMLPackage,
		ObjectFactory factory, Part sourcePart, byte[] bytes,
		String filenameHint, String altText, int id1, int id2,
		boolean isUnderLine, String underLineSize,
		JcEnumeration jcEnumeration) throws Exception {
	BinaryPartAbstractImage imagePart = BinaryPartAbstractImage
			.createImagePart(wordMLPackage, sourcePart, bytes);
	Inline inline = imagePart.createImageInline(filenameHint, altText, id1,
			id2, false);
	P p = factory.createP();
	R run = factory.createR();
	p.getContent().add(run);
	Drawing drawing = factory.createDrawing();
	run.getContent().add(drawing);
	drawing.getAnchorOrInline().add(inline);
	PPr pPr = p.getPPr();
	if (pPr == null) {
		pPr = factory.createPPr();
	}
	Jc jc = pPr.getJc();
	if (jc == null) {
		jc = new Jc();
	}
	jc.setVal(jcEnumeration);
	pPr.setJc(jc);
	p.setPPr(pPr);

	if (isUnderLine) {
		PBdr pBdr = pPr.getPBdr();
		if (pBdr == null) {
			pBdr = factory.createPPrBasePBdr();
		}
		CTBorder value = new CTBorder();
		value.setVal(STBorder.SINGLE);
		value.setColor("000000");
		value.setSpace(new BigInteger("0"));
		value.setSz(new BigInteger(underLineSize));
		pBdr.setBetween(value);
		pPr.setPBdr(pBdr);
	}
	setParagraphSpacing(factory, p, jcEnumeration, true, "0", "0", null,
			null, true, "240", STLineSpacingRule.AUTO);
	return p;
}
 
Example #24
Source File: Docx4jExample.java    From tutorials with MIT License 4 votes vote down vote up
void createDocumentPackage(String outputPath, String imagePath) throws Exception {
    WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();
    MainDocumentPart mainDocumentPart = wordPackage.getMainDocumentPart();
    mainDocumentPart.addStyledParagraphOfText("Title", "Hello World!");
    mainDocumentPart.addParagraphOfText("Welcome To Baeldung!");

    ObjectFactory factory = Context.getWmlObjectFactory();
    P p = factory.createP();
    R r = factory.createR();
    Text t = factory.createText();
    t.setValue("Welcome To Baeldung");
    r.getContent().add(t);
    p.getContent().add(r);
    RPr rpr = factory.createRPr();
    BooleanDefaultTrue b = new BooleanDefaultTrue();
    rpr.setB(b);
    rpr.setI(b);
    rpr.setCaps(b);
    Color red = factory.createColor();
    red.setVal("green");
    rpr.setColor(red);
    r.setRPr(rpr);
    mainDocumentPart.getContent().add(p);

    File image = new File(imagePath);
    byte[] fileContent = Files.readAllBytes(image.toPath());
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordPackage, fileContent);
    Inline inline = imagePart.createImageInline("Baeldung Image", "Alt Text", 1, 2, false);
    P Imageparagraph = addImageToParagraph(inline);
    mainDocumentPart.getContent().add(Imageparagraph);

    int writableWidthTwips = wordPackage.getDocumentModel().getSections().get(0).getPageDimensions().getWritableWidthTwips();
    int columnNumber = 3;
    Tbl tbl = TblFactory.createTable(3, 3, writableWidthTwips / columnNumber);
    List<Object> rows = tbl.getContent();
    for (Object row : rows) {
        Tr tr = (Tr) row;
        List<Object> cells = tr.getContent();
        for (Object cell : cells) {
            Tc td = (Tc) cell;
            td.getContent().add(p);
        }
    }

    mainDocumentPart.getContent().add(tbl);
    File exportFile = new File(outputPath);
    wordPackage.save(exportFile);
}