https://issues.apache.org/bugzilla/show_bug.cgi?id=49765

--- Comment #15 from Huib <[email protected]> 2011-04-05 20:20:49 EDT ---
My first failed attempt:
CTPicture pict = createParagraph().createRun().getCTR().addNewPict();
        XWPFPicture shape = new XWPFPicture(pict, createParagraph());
        shape.setPictureReference(rel);


My current working workaround:

import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlToken;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
import
org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;

import java.io.IOException;
import java.io.InputStream;

public class CustomXWPFDocument extends XWPFDocument
{
    public CustomXWPFDocument(InputStream in) throws IOException
    {
        super(in);
    }

    public void createPicture(int id, int width, int height)
    {
        final int EMU = 9525;
        width *= EMU;
        height *= EMU;
        String blipId =
getAllPictures().get(id).getPackageRelationship().getId();

        CTInline inline =
createParagraph().createRun().getCTR().addNewDrawing().addNewInline();

        String picXml = "" +
                "<a:graphic
xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\";>" +
                "   <a:graphicData
uri=\"http://schemas.openxmlformats.org/drawingml/2006/picture\";>" +
                "      <pic:pic
xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\";>" +
                "         <pic:nvPicPr>" +
                "            <pic:cNvPr id=\"" + id + "\" name=\"Generated\"/>"
+
                "            <pic:cNvPicPr/>" +
                "         </pic:nvPicPr>" +
                "         <pic:blipFill>" +
                "            <a:blip r:embed=\"" + blipId + "\"
xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"/>"
+
                "            <a:stretch>" +
                "               <a:fillRect/>" +
                "            </a:stretch>" +
                "         </pic:blipFill>" +
                "         <pic:spPr>" +
                "            <a:xfrm>" +
                "               <a:off x=\"0\" y=\"0\"/>" +
                "               <a:ext cx=\"" + width + "\" cy=\"" + height +
"\"/>" +
                "            </a:xfrm>" +
                "            <a:prstGeom prst=\"rect\">" +
                "               <a:avLst/>" +
                "            </a:prstGeom>" +
                "         </pic:spPr>" +
                "      </pic:pic>" +
                "   </a:graphicData>" +
                "</a:graphic>";

        //CTGraphicalObjectData graphicData =
inline.addNewGraphic().addNewGraphicData();
        XmlToken xmlToken = null;
        try
        {
            xmlToken = XmlToken.Factory.parse(picXml);
        }
        catch(XmlException xe)
        {
            xe.printStackTrace();
        }
        inline.set(xmlToken);
        //graphicData.set(xmlToken);

        inline.setDistT(0);
        inline.setDistB(0);
        inline.setDistL(0);
        inline.setDistR(0);

        CTPositiveSize2D extent = inline.addNewExtent();
        extent.setCx(width);
        extent.setCy(height);

        CTNonVisualDrawingProps docPr = inline.addNewDocPr();
        docPr.setId(id);
        docPr.setName("Picture " + id);
        docPr.setDescr("Generated");
    }
}

This is invoked with:
int id = document.addPicture(new FileInputStream(new File("c:\\test.jpg")),
Document.PICTURE_TYPE_JPEG);
document.createPicture(id, 259, 58);

id = document.addPicture(new FileInputStream(new File("c:\\test.png")),
Document.PICTURE_TYPE_PNG);
document.createPicture(id, 400, 200);


I'm sure there must be a nicer way to do this, but it works for me for now...

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to