Search in sources :

Example 1 with CTGraphicalObjectData

use of org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData in project poi by apache.

the class XSLFGraphicFrame method copy.

@Override
void copy(XSLFShape sh) {
    super.copy(sh);
    CTGraphicalObjectData data = ((CTGraphicalObjectFrame) getXmlObject()).getGraphic().getGraphicData();
    String uri = data.getUri();
    if (uri.equals("http://schemas.openxmlformats.org/drawingml/2006/diagram")) {
        copyDiagram(data, (XSLFGraphicFrame) sh);
    } else {
    // TODO  support other types of objects
    }
}
Also used : CTGraphicalObjectData(org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData)

Example 2 with CTGraphicalObjectData

use of org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData in project poi by apache.

the class XSLFTable method prototype.

static CTGraphicalObjectFrame prototype(int shapeId) {
    CTGraphicalObjectFrame frame = CTGraphicalObjectFrame.Factory.newInstance();
    CTGraphicalObjectFrameNonVisual nvGr = frame.addNewNvGraphicFramePr();
    CTNonVisualDrawingProps cnv = nvGr.addNewCNvPr();
    cnv.setName("Table " + shapeId);
    cnv.setId(shapeId + 1);
    nvGr.addNewCNvGraphicFramePr().addNewGraphicFrameLocks().setNoGrp(true);
    nvGr.addNewNvPr();
    frame.addNewXfrm();
    CTGraphicalObjectData gr = frame.addNewGraphic().addNewGraphicData();
    XmlCursor grCur = gr.newCursor();
    grCur.toNextToken();
    grCur.beginElement(new QName(DRAWINGML_URI, "tbl"));
    CTTable tbl = CTTable.Factory.newInstance();
    tbl.addNewTblPr();
    tbl.addNewTblGrid();
    XmlCursor tblCur = tbl.newCursor();
    tblCur.moveXmlContents(grCur);
    tblCur.dispose();
    grCur.dispose();
    gr.setUri(TABLE_URI);
    return frame;
}
Also used : CTGraphicalObjectData(org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData) CTGraphicalObjectFrame(org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrame) QName(javax.xml.namespace.QName) CTNonVisualDrawingProps(org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps) CTTable(org.openxmlformats.schemas.drawingml.x2006.main.CTTable) CTGraphicalObjectFrameNonVisual(org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrameNonVisual) XmlCursor(org.apache.xmlbeans.XmlCursor)

Example 3 with CTGraphicalObjectData

use of org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData in project poi by apache.

the class XSSFGraphicFrame method setChart.

/**
	 * Assign a DrawingML chart to the graphic frame.
	 */
protected void setChart(XSSFChart chart, String relId) {
    CTGraphicalObjectData data = graphicFrame.getGraphic().addNewGraphicData();
    appendChartElement(data, relId);
    chart.setGraphicFrame(this);
    return;
}
Also used : CTGraphicalObjectData(org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData)

Example 4 with CTGraphicalObjectData

use of org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData in project poi by apache.

the class XWPFRun method addPicture.

/**
     * Adds a picture to the run. This method handles
     * attaching the picture data to the overall file.
     *
     * @param pictureData The raw picture data
     * @param pictureType The type of the picture, eg {@link Document#PICTURE_TYPE_JPEG}
     * @param width       width in EMUs. To convert to / from points use {@link org.apache.poi.util.Units}
     * @param height      height in EMUs. To convert to / from points use {@link org.apache.poi.util.Units}
     * @throws org.apache.poi.openxml4j.exceptions.InvalidFormatException
     * @throws IOException
     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_EMF
     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_WMF
     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PICT
     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_JPEG
     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_PNG
     * @see org.apache.poi.xwpf.usermodel.Document#PICTURE_TYPE_DIB
     */
public XWPFPicture addPicture(InputStream pictureData, int pictureType, String filename, int width, int height) throws InvalidFormatException, IOException {
    String relationId;
    XWPFPictureData picData;
    // TODO Should we have an interface for this sort of thing?
    if (parent.getPart() instanceof XWPFHeaderFooter) {
        XWPFHeaderFooter headerFooter = (XWPFHeaderFooter) parent.getPart();
        relationId = headerFooter.addPictureData(pictureData, pictureType);
        picData = (XWPFPictureData) headerFooter.getRelationById(relationId);
    } else {
        @SuppressWarnings("resource") XWPFDocument doc = parent.getDocument();
        relationId = doc.addPictureData(pictureData, pictureType);
        picData = (XWPFPictureData) doc.getRelationById(relationId);
    }
    // Create the drawing entry for it
    try {
        CTDrawing drawing = run.addNewDrawing();
        CTInline inline = drawing.addNewInline();
        // Do the fiddly namespace bits on the inline
        // (We need full control of what goes where and as what)
        String xml = "<a:graphic xmlns:a=\"" + CTGraphicalObject.type.getName().getNamespaceURI() + "\">" + "<a:graphicData uri=\"" + CTPicture.type.getName().getNamespaceURI() + "\">" + "<pic:pic xmlns:pic=\"" + CTPicture.type.getName().getNamespaceURI() + "\" />" + "</a:graphicData>" + "</a:graphic>";
        InputSource is = new InputSource(new StringReader(xml));
        org.w3c.dom.Document doc = DocumentHelper.readDocument(is);
        inline.set(XmlToken.Factory.parse(doc.getDocumentElement(), DEFAULT_XML_OPTIONS));
        // Setup the inline
        inline.setDistT(0);
        inline.setDistR(0);
        inline.setDistB(0);
        inline.setDistL(0);
        CTNonVisualDrawingProps docPr = inline.addNewDocPr();
        long id = getParent().getDocument().getDrawingIdManager().reserveNew();
        docPr.setId(id);
        /* This name is not visible in Word 2010 anywhere. */
        docPr.setName("Drawing " + id);
        docPr.setDescr(filename);
        CTPositiveSize2D extent = inline.addNewExtent();
        extent.setCx(width);
        extent.setCy(height);
        // Grab the picture object
        CTGraphicalObject graphic = inline.getGraphic();
        CTGraphicalObjectData graphicData = graphic.getGraphicData();
        CTPicture pic = getCTPictures(graphicData).get(0);
        // Set it up
        CTPictureNonVisual nvPicPr = pic.addNewNvPicPr();
        CTNonVisualDrawingProps cNvPr = nvPicPr.addNewCNvPr();
        /* use "0" for the id. See ECM-576, 20.2.2.3 */
        cNvPr.setId(0L);
        /* This name is not visible in Word 2010 anywhere */
        cNvPr.setName("Picture " + id);
        cNvPr.setDescr(filename);
        CTNonVisualPictureProperties cNvPicPr = nvPicPr.addNewCNvPicPr();
        cNvPicPr.addNewPicLocks().setNoChangeAspect(true);
        CTBlipFillProperties blipFill = pic.addNewBlipFill();
        CTBlip blip = blipFill.addNewBlip();
        blip.setEmbed(parent.getPart().getRelationId(picData));
        blipFill.addNewStretch().addNewFillRect();
        CTShapeProperties spPr = pic.addNewSpPr();
        CTTransform2D xfrm = spPr.addNewXfrm();
        CTPoint2D off = xfrm.addNewOff();
        off.setX(0);
        off.setY(0);
        CTPositiveSize2D ext = xfrm.addNewExt();
        ext.setCx(width);
        ext.setCy(height);
        CTPresetGeometry2D prstGeom = spPr.addNewPrstGeom();
        prstGeom.setPrst(STShapeType.RECT);
        prstGeom.addNewAvLst();
        // Finish up
        XWPFPicture xwpfPicture = new XWPFPicture(pic, this);
        pictures.add(xwpfPicture);
        return xwpfPicture;
    } catch (XmlException e) {
        throw new IllegalStateException(e);
    } catch (SAXException e) {
        throw new IllegalStateException(e);
    }
}
Also used : InputSource(org.xml.sax.InputSource) CTTransform2D(org.openxmlformats.schemas.drawingml.x2006.main.CTTransform2D) CTShapeProperties(org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties) XmlString(org.apache.xmlbeans.XmlString) SAXException(org.xml.sax.SAXException) CTPoint2D(org.openxmlformats.schemas.drawingml.x2006.main.CTPoint2D) CTBlip(org.openxmlformats.schemas.drawingml.x2006.main.CTBlip) CTPresetGeometry2D(org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D) StringReader(java.io.StringReader) CTPicture(org.openxmlformats.schemas.drawingml.x2006.picture.CTPicture) CTGraphicalObject(org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObject) CTInline(org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline) CTDrawing(org.openxmlformats.schemas.wordprocessingml.x2006.main.CTDrawing) CTPictureNonVisual(org.openxmlformats.schemas.drawingml.x2006.picture.CTPictureNonVisual) CTGraphicalObjectData(org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData) CTNonVisualPictureProperties(org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualPictureProperties) CTBlipFillProperties(org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties) XmlException(org.apache.xmlbeans.XmlException) CTNonVisualDrawingProps(org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps) CTPositiveSize2D(org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D)

Example 5 with CTGraphicalObjectData

use of org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData in project poi by apache.

the class XSLFCommonSlideData method getDrawingText.

public List<DrawingTextBody> getDrawingText() {
    CTGroupShape gs = data.getSpTree();
    List<DrawingTextBody> out = new ArrayList<DrawingTextBody>();
    processShape(gs, out);
    for (CTGroupShape shape : gs.getGrpSpArray()) {
        processShape(shape, out);
    }
    for (CTGraphicalObjectFrame frame : gs.getGraphicFrameArray()) {
        CTGraphicalObjectData data = frame.getGraphic().getGraphicData();
        XmlCursor c = data.newCursor();
        c.selectPath("declare namespace pic='" + CTTable.type.getName().getNamespaceURI() + "' .//pic:tbl");
        while (c.toNextSelection()) {
            XmlObject o = c.getObject();
            if (o instanceof XmlAnyTypeImpl) {
                // Pesky XmlBeans bug - see Bugzilla #49934
                try {
                    o = CTTable.Factory.parse(o.toString(), DEFAULT_XML_OPTIONS);
                } catch (XmlException e) {
                    throw new POIXMLException(e);
                }
            }
            if (o instanceof CTTable) {
                DrawingTable table = new DrawingTable((CTTable) o);
                for (DrawingTableRow row : table.getRows()) {
                    for (DrawingTableCell cell : row.getCells()) {
                        DrawingTextBody textBody = cell.getTextBody();
                        out.add(textBody);
                    }
                }
            }
        }
        c.dispose();
    }
    return out;
}
Also used : CTGraphicalObjectFrame(org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrame) ArrayList(java.util.ArrayList) POIXMLException(org.apache.poi.POIXMLException) CTGroupShape(org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape) XmlCursor(org.apache.xmlbeans.XmlCursor) CTGraphicalObjectData(org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData) XmlException(org.apache.xmlbeans.XmlException) CTTable(org.openxmlformats.schemas.drawingml.x2006.main.CTTable) XmlAnyTypeImpl(org.apache.xmlbeans.impl.values.XmlAnyTypeImpl) XmlObject(org.apache.xmlbeans.XmlObject)

Aggregations

CTGraphicalObjectData (org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData)5 XmlCursor (org.apache.xmlbeans.XmlCursor)2 XmlException (org.apache.xmlbeans.XmlException)2 CTNonVisualDrawingProps (org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps)2 CTTable (org.openxmlformats.schemas.drawingml.x2006.main.CTTable)2 CTGraphicalObjectFrame (org.openxmlformats.schemas.presentationml.x2006.main.CTGraphicalObjectFrame)2 StringReader (java.io.StringReader)1 ArrayList (java.util.ArrayList)1 QName (javax.xml.namespace.QName)1 POIXMLException (org.apache.poi.POIXMLException)1 XmlObject (org.apache.xmlbeans.XmlObject)1 XmlString (org.apache.xmlbeans.XmlString)1 XmlAnyTypeImpl (org.apache.xmlbeans.impl.values.XmlAnyTypeImpl)1 CTBlip (org.openxmlformats.schemas.drawingml.x2006.main.CTBlip)1 CTBlipFillProperties (org.openxmlformats.schemas.drawingml.x2006.main.CTBlipFillProperties)1 CTGraphicalObject (org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObject)1 CTNonVisualPictureProperties (org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualPictureProperties)1 CTPoint2D (org.openxmlformats.schemas.drawingml.x2006.main.CTPoint2D)1 CTPositiveSize2D (org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D)1 CTPresetGeometry2D (org.openxmlformats.schemas.drawingml.x2006.main.CTPresetGeometry2D)1