Search in sources :

Example 11 with Inline

use of org.docx4j.dml.wordprocessingDrawing.Inline in project docx4j-template by vindell.

the class AddingAnInlineImage method addImageToPackage.

/**
 *  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);
}
Also used : P(org.docx4j.wml.P) Inline(org.docx4j.dml.wordprocessingDrawing.Inline) BinaryPartAbstractImage(org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage)

Example 12 with Inline

use of org.docx4j.dml.wordprocessingDrawing.Inline in project flexmark-java by vsch.

the class CoreNodeDocxRenderer method newImage.

public R newImage(final DocxRendererContext docx, byte[] bytes, String filenameHint, Attributes attributes, int id1, int id2) {
    try {
        BinaryPartAbstractImage imagePart = null;
        imagePart = BinaryPartAbstractImage.createImagePart(docx.getPackage(), docx.getContainerPart(), bytes);
        Inline inline = null;
        String altText = attributes.contains("alt") ? attributes.getValue("alt") : "";
        List<SectionWrapper> sections = docx.getPackage().getDocumentModel().getSections();
        PageDimensions page = sections.get(sections.size() - 1).getPageDimensions();
        double writableWidthTwips = page.getWritableWidthTwips();
        long cx = getSizeInfo(attributes, "width", page.getWritableWidthTwips());
        long cy = cx > 0 ? getSizeInfo(attributes, "height", page.getWritableHeightTwips()) : -1;
        // kludge: normally there is no max-width attribute but we can fake it
        long longMaxWidth = getSizeInfo(attributes, "max-width", page.getWritableWidthTwips());
        int maxWidth = longMaxWidth > 0 && longMaxWidth <= Integer.MAX_VALUE ? (int) longMaxWidth : -1;
        if (cx > 0 && cy > 0) {
            // here we need cx & cy in emu which needs conversion from twips
            cx = UnitsOfMeasurement.twipToEMU(cx);
            cy = UnitsOfMeasurement.twipToEMU(cy);
            inline = imagePart.createImageInline(filenameHint, altText, id1, id2, cx, cy, false);
        } else {
            if (cx > 0) {
                inline = imagePart.createImageInline(filenameHint, altText, id1, id2, cx, false);
            } else {
                if (maxWidth > 0) {
                    inline = imagePart.createImageInline(filenameHint, altText, id1, id2, false, maxWidth);
                } else {
                    inline = imagePart.createImageInline(filenameHint, altText, id1, id2, false);
                }
            }
        }
        // Now add the inline in w:p/w:r/w:drawing
        org.docx4j.wml.R run = docx.createR();
        org.docx4j.wml.Drawing drawing = docx.getFactory().createDrawing();
        run.getContent().add(drawing);
        drawing.getAnchorOrInline().add(inline);
        return run;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}
Also used : SectionWrapper(org.docx4j.model.structure.SectionWrapper) Inline(org.docx4j.dml.wordprocessingDrawing.Inline) URISyntaxException(java.net.URISyntaxException) TocException(org.docx4j.toc.TocException) Docx4JException(org.docx4j.openpackaging.exceptions.Docx4JException) PageDimensions(org.docx4j.model.structure.PageDimensions) org.docx4j.wml(org.docx4j.wml) BinaryPartAbstractImage(org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage)

Example 13 with Inline

use of org.docx4j.dml.wordprocessingDrawing.Inline in project mdw-designer by CenturyLinkCloud.

the class DocxBuilder method addImage.

public void addImage(byte[] imageBytes) throws Exception {
    BinaryPartAbstractImage.setDensity(600);
    BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, imageBytes);
    Inline inline = imagePart.createImageInline(null, null, 0, 1, false);
    ObjectFactory factory = Context.getWmlObjectFactory();
    P imgP = factory.createP();
    R imgRun = factory.createR();
    imgP.getContent().add(imgRun);
    Drawing drawing = factory.createDrawing();
    imgRun.getContent().add(drawing);
    drawing.getAnchorOrInline().add(inline);
    getMdp().addObject(imgP);
}
Also used : P(org.docx4j.wml.P) Drawing(org.docx4j.wml.Drawing) R(org.docx4j.wml.R) ObjectFactory(org.docx4j.wml.ObjectFactory) Inline(org.docx4j.dml.wordprocessingDrawing.Inline) BinaryPartAbstractImage(org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage)

Example 14 with Inline

use of org.docx4j.dml.wordprocessingDrawing.Inline in project Java-Tutorial by gpcodervn.

the class ImageAddTest method testSize20pt.

@Test
public void testSize20pt() throws Exception {
    Inline inline1 = getInline("<div><img src='" + PNG_IMAGE_DATA + "' width='20pt' height='20pt' /></div>");
    Assert.assertTrue(inline1.getExtent().getCx() == 451273);
}
Also used : Inline(org.docx4j.dml.wordprocessingDrawing.Inline) Test(org.junit.Test)

Example 15 with Inline

use of org.docx4j.dml.wordprocessingDrawing.Inline in project Java-Tutorial by gpcodervn.

the class ImageAddTest method testSizeSpecifiedPxPlusCSS.

@Test
public void testSizeSpecifiedPxPlusCSS() throws Exception {
    // box.getHeight() and  box.getWidth() include padding
    Inline inline2 = getInline("<div><img style='padding-top:10px;padding-left:10px;' src='" + PNG_IMAGE_DATA + "' width='20px' height='10px' /></div>");
    Assert.assertTrue(inline2.getExtent().getCx() == 338667);
// Assert.assertTrue(inline2.getExtent().getCx() / inline2.getExtent().getCy() == 2);
}
Also used : Inline(org.docx4j.dml.wordprocessingDrawing.Inline) Test(org.junit.Test)

Aggregations

Inline (org.docx4j.dml.wordprocessingDrawing.Inline)26 BinaryPartAbstractImage (org.docx4j.openpackaging.parts.WordprocessingML.BinaryPartAbstractImage)16 P (org.docx4j.wml.P)10 R (org.docx4j.wml.R)10 Test (org.junit.Test)10 Drawing (org.docx4j.wml.Drawing)9 Jc (org.docx4j.wml.Jc)5 PPr (org.docx4j.wml.PPr)5 CTVerticalJc (org.docx4j.wml.CTVerticalJc)4 ObjectFactory (org.docx4j.wml.ObjectFactory)4 STVerticalJc (org.docx4j.wml.STVerticalJc)4 Text (org.docx4j.wml.Text)4 File (java.io.File)3 BigInteger (java.math.BigInteger)2 WordprocessingMLPackage (org.docx4j.openpackaging.packages.WordprocessingMLPackage)2 MainDocumentPart (org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart)2 CTBorder (org.docx4j.wml.CTBorder)2 PBdr (org.docx4j.wml.PPrBase.PBdr)2 FileInputStream (java.io.FileInputStream)1 InputStream (java.io.InputStream)1