Search in sources :

Example 1 with TblWidth

use of org.docx4j.wml.TblWidth in project Java-Tutorial by gpcodervn.

the class TableBordersTest method testTableBorderCollapse.

@Test
public void testTableBorderCollapse() throws Docx4JException {
    Tbl tbl = table("<table border='1' style='border-collapse: collapse;'><tr><td>1</td></tr></table>");
    TblWidth spacing = tbl.getTblPr().getTblCellSpacing();
    assertEquals("auto", spacing.getType());
    assertEquals(BigInteger.ZERO, spacing.getW());
    tbl = table("<table border='1'><tr><td>1</td></tr></table>");
    spacing = tbl.getTblPr().getTblCellSpacing();
    assertEquals("dxa", spacing.getType());
    assertTrue(spacing.getW().longValue() > 0);
}
Also used : TblWidth(org.docx4j.wml.TblWidth) Tbl(org.docx4j.wml.Tbl) Test(org.junit.Test)

Example 2 with TblWidth

use of org.docx4j.wml.TblWidth in project Java-Tutorial by gpcodervn.

the class ComplexTable method addTcVMerge.

private static void addTcVMerge(Tr tr, String label, String text, String vMergeVal, String width) {
    Tc tc = factory.createTc();
    TcPr tcPr = new TcPr();
    TblWidth tblwidth = new TblWidth();
    tblwidth.setType("dxa");
    tblwidth.setW(new BigInteger(width));
    tcPr.setTcW(tblwidth);
    VMerge merge = new VMerge();
    if (vMergeVal != null) {
        merge.setVal(vMergeVal);
    }
    tcPr.setVMerge(merge);
    tc.setTcPr(tcPr);
    if (text != null) {
        tc.getEGBlockLevelElts().add(wordMLPackage.getMainDocumentPart().createParagraphOfText(text));
    }
    tr.getEGContentCellContent().add(tc);
}
Also used : TblWidth(org.docx4j.wml.TblWidth) TcPr(org.docx4j.wml.TcPr) BigInteger(java.math.BigInteger) Tc(org.docx4j.wml.Tc) VMerge(org.docx4j.wml.TcPrInner.VMerge)

Example 3 with TblWidth

use of org.docx4j.wml.TblWidth in project Java-Tutorial by gpcodervn.

the class ComplexTable method main.

public static void main(String[] args) throws Exception {
    System.out.println("Creating package..");
    wordMLPackage = WordprocessingMLPackage.createPackage();
    Tbl mainTable = factory.createTbl();
    TblPr tblPr = new TblPr();
    TblStyle tblStyle = new TblStyle();
    tblStyle.setVal("TableGrid");
    tblPr.setTblStyle(tblStyle);
    mainTable.setTblPr(tblPr);
    TblWidth width = new TblWidth();
    width.setType("auto");
    width.setW(new BigInteger("0"));
    tblPr.setTblW(width);
    // create row 1
    Tr tr = factory.createTr();
    // col 1 of row 1
    addTc(tr, "Ab", "Ab", "3192");
    // col 2 of row 1
    addTc(tr, "Ac", "Ac", "3192");
    // a vertically merged col
    addTcVMerge(tr, "test", "Vertical Merge", "restart", "9000");
    mainTable.getEGContentRowContent().add(tr);
    // create row 2
    Tr tr2 = factory.createTr();
    TrPr pr = new TrPr();
    tr2.setTrPr(pr);
    // col 1 of row 2
    Tc tc1 = factory.createTc();
    TcPr tcPr = new TcPr();
    TblWidth widtha = new TblWidth();
    widtha.setType("dxa");
    widtha.setW(new BigInteger("0"));
    tcPr.setTcW(widtha);
    tc1.setTcPr(tcPr);
    tc1.getEGBlockLevelElts().add(XmlUtils.unmarshalString(tblXML));
    // The following is important or you may get a corrupted docx file
    tc1.getEGBlockLevelElts().add(wordMLPackage.getMainDocumentPart().createParagraphOfText(""));
    tr2.getEGContentCellContent().add(tc1);
    mainTable.getEGContentRowContent().add(tr2);
    // col2 of row 2
    addTc(tr2, "bA", "bA", "3192");
    // end vertically merged col
    addTcVMerge(tr2, "", "", null, "9000");
    // create row 3
    Tr tr3 = factory.createTr();
    TrPr pr3 = new TrPr();
    tr3.setTrPr(pr3);
    Tc tc31 = factory.createTc();
    TcPr tcPr3 = new TcPr();
    TblWidth width31 = new TblWidth();
    width31.setType("dxa");
    width31.setW(new BigInteger("0"));
    tcPr3.setTcW(width31);
    // for setting colspan of 3
    GridSpan gridSpan = new GridSpan();
    gridSpan.setVal(new BigInteger("3"));
    tcPr3.setGridSpan(gridSpan);
    tc31.setTcPr(tcPr3);
    tc31.getEGBlockLevelElts().add(wordMLPackage.getMainDocumentPart().createParagraphOfText("Horizontal merge 3 col"));
    tr3.getEGContentCellContent().add(tc31);
    mainTable.getEGContentRowContent().add(tr3);
    // create row 4 -6384
    Tr tr4 = factory.createTr();
    TrPr pr4 = new TrPr();
    tr4.setTrPr(pr4);
    Tc tc41 = factory.createTc();
    TcPr tcPr4 = new TcPr();
    TblWidth width41 = new TblWidth();
    width41.setType("dxa");
    width41.setW(new BigInteger("0"));
    tcPr4.setTcW(width31);
    // for setting colspan of 3
    GridSpan gridSpan41 = new GridSpan();
    gridSpan41.setVal(new BigInteger("2"));
    tcPr4.setGridSpan(gridSpan41);
    tc41.setTcPr(tcPr4);
    tc41.getEGBlockLevelElts().add(wordMLPackage.getMainDocumentPart().createParagraphOfText("Horizontal merge 2 col"));
    tr4.getEGContentCellContent().add(tc41);
    // Add an image to the last col
    File file = new File("resources/image.png");
    java.io.InputStream is = new java.io.FileInputStream(file);
    long length = file.length();
    // It needs to be an int type.
    if (length > Integer.MAX_VALUE) {
        System.out.println("File too large!!");
    }
    byte[] bytes = new byte[(int) length];
    int offset = 0;
    int numRead = 0;
    while (offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
        offset += numRead;
    }
    // Ensure all the bytes have been read in
    if (offset < bytes.length) {
        System.out.println("Could not completely read file " + file.getName());
    }
    is.close();
    String filenameHint = null;
    String altText = null;
    int id1 = 0;
    int id2 = 1;
    org.docx4j.wml.P p2 = newImage(wordMLPackage, bytes, filenameHint, altText, id1, id2, 3000);
    Tc tc42 = factory.createTc();
    tc42.getEGBlockLevelElts().add(p2);
    tr4.getEGContentCellContent().add(tc42);
    mainTable.getEGContentRowContent().add(tr4);
    wordMLPackage.getMainDocumentPart().addObject(mainTable);
    // Now save it
    wordMLPackage.save(new java.io.File("output/ComplexTable.docx"));
    System.out.println("Done.");
}
Also used : TblWidth(org.docx4j.wml.TblWidth) TrPr(org.docx4j.wml.TrPr) TblStyle(org.docx4j.wml.CTTblPrBase.TblStyle) TblPr(org.docx4j.wml.TblPr) File(java.io.File) Tc(org.docx4j.wml.Tc) TcPr(org.docx4j.wml.TcPr) BigInteger(java.math.BigInteger) File(java.io.File) Tr(org.docx4j.wml.Tr) Tbl(org.docx4j.wml.Tbl) GridSpan(org.docx4j.wml.TcPrInner.GridSpan)

Example 4 with TblWidth

use of org.docx4j.wml.TblWidth in project Java-Tutorial by gpcodervn.

the class Docx4jUtils method setCellWidth.

private void setCellWidth(Tc tableCell, int width) {
    if (width > 0) {
        TcPr tableCellProperties = tableCell.getTcPr();
        if (tableCellProperties == null) {
            tableCellProperties = new TcPr();
            tableCell.setTcPr(tableCellProperties);
        }
        TblWidth tableWidth = new TblWidth();
        tableWidth.setType("dxa");
        tableWidth.setW(BigInteger.valueOf(width));
        tableCellProperties.setTcW(tableWidth);
    }
}
Also used : TblWidth(org.docx4j.wml.TblWidth) TcPr(org.docx4j.wml.TcPr)

Example 5 with TblWidth

use of org.docx4j.wml.TblWidth in project Java-Tutorial by gpcodervn.

the class Docx4jUtils method setCellMargins.

private void setCellMargins(Tc tableCell, int top, int right, int bottom, int left) {
    TcPr tableCellProperties = tableCell.getTcPr();
    if (tableCellProperties == null) {
        tableCellProperties = new TcPr();
        tableCell.setTcPr(tableCellProperties);
    }
    TcMar margins = new TcMar();
    if (bottom > 0) {
        TblWidth bW = new TblWidth();
        bW.setType("dxa");
        bW.setW(BigInteger.valueOf(bottom));
        margins.setBottom(bW);
    }
    if (top > 0) {
        TblWidth tW = new TblWidth();
        tW.setType("dxa");
        tW.setW(BigInteger.valueOf(top));
        margins.setTop(tW);
    }
    if (left > 0) {
        TblWidth lW = new TblWidth();
        lW.setType("dxa");
        lW.setW(BigInteger.valueOf(left));
        margins.setLeft(lW);
    }
    if (right > 0) {
        TblWidth rW = new TblWidth();
        rW.setType("dxa");
        rW.setW(BigInteger.valueOf(right));
        margins.setRight(rW);
    }
    tableCellProperties.setTcMar(margins);
}
Also used : TcMar(org.docx4j.wml.TcMar) TblWidth(org.docx4j.wml.TblWidth) TcPr(org.docx4j.wml.TcPr)

Aggregations

TblWidth (org.docx4j.wml.TblWidth)20 TcPr (org.docx4j.wml.TcPr)14 BigInteger (java.math.BigInteger)10 TblPr (org.docx4j.wml.TblPr)8 Tc (org.docx4j.wml.Tc)7 Tbl (org.docx4j.wml.Tbl)5 Tr (org.docx4j.wml.Tr)4 TblGrid (org.docx4j.wml.TblGrid)3 TblGridCol (org.docx4j.wml.TblGridCol)3 TblStyle (org.docx4j.wml.CTTblPrBase.TblStyle)2 STHint (org.docx4j.wml.STHint)2 TcMar (org.docx4j.wml.TcMar)2 GridSpan (org.docx4j.wml.TcPrInner.GridSpan)2 VMerge (org.docx4j.wml.TcPrInner.VMerge)2 TrPr (org.docx4j.wml.TrPr)2 File (java.io.File)1 CTTblCellMar (org.docx4j.wml.CTTblCellMar)1 CTVerticalJc (org.docx4j.wml.CTVerticalJc)1 Jc (org.docx4j.wml.Jc)1 ObjectFactory (org.docx4j.wml.ObjectFactory)1