Search in sources :

Example 1 with EMF

use of org.apache.poi.hslf.blip.EMF in project poi by apache.

the class TestPictures method testEMF.

/**
     * Test read/write EMF
     */
@Test
public void testEMF() throws IOException {
    HSLFSlideShow ppt = new HSLFSlideShow();
    HSLFSlide slide = ppt.createSlide();
    byte[] src_bytes = slTests.readFile("wrench.emf");
    HSLFPictureData data = ppt.addPicture(src_bytes, PictureType.EMF);
    ImageHeaderEMF nHeader = new ImageHeaderEMF(src_bytes, 0);
    final int expWidth = 190, expHeight = 115;
    Dimension nDim = nHeader.getSize();
    assertEquals(expWidth, nDim.getWidth(), 0);
    assertEquals(expHeight, nDim.getHeight(), 0);
    Dimension dim = data.getImageDimensionInPixels();
    assertEquals(Units.pointsToPixel(expWidth), dim.getWidth(), 0);
    assertEquals(Units.pointsToPixel(expHeight), dim.getHeight(), 0);
    HSLFPictureShape pict = new HSLFPictureShape(data);
    assertEquals(data.getIndex(), pict.getPictureIndex());
    slide.addShape(pict);
    //serialize and read again
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ppt.write(out);
    out.close();
    ppt = new HSLFSlideShow(new HSLFSlideShowImpl(new ByteArrayInputStream(out.toByteArray())));
    //make sure we can get this picture shape and it refers to the correct picture data
    List<HSLFShape> sh = ppt.getSlides().get(0).getShapes();
    assertEquals(1, sh.size());
    pict = (HSLFPictureShape) sh.get(0);
    assertEquals(data.getIndex(), pict.getPictureIndex());
    //check picture data
    List<HSLFPictureData> pictures = ppt.getPictureData();
    assertEquals(1, pictures.size());
    HSLFPictureData pd = pictures.get(0);
    dim = pd.getImageDimension();
    assertEquals(expWidth, dim.width);
    assertEquals(expHeight, dim.height);
    //the Picture shape refers to the PictureData object in the Presentation
    assertEquals(pict.getPictureData(), pd);
    assertEquals(1, pictures.size());
    assertEquals(PictureType.EMF, pd.getType());
    assertTrue(pd instanceof EMF);
    //compare the content of the initial file with what is stored in the PictureData
    byte[] ppt_bytes = pd.getData();
    assertArrayEquals(src_bytes, ppt_bytes);
}
Also used : ImageHeaderEMF(org.apache.poi.sl.image.ImageHeaderEMF) Dimension(java.awt.Dimension) ByteArrayOutputStream(java.io.ByteArrayOutputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) EMF(org.apache.poi.hslf.blip.EMF) ImageHeaderEMF(org.apache.poi.sl.image.ImageHeaderEMF) Test(org.junit.Test)

Aggregations

Dimension (java.awt.Dimension)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 EMF (org.apache.poi.hslf.blip.EMF)1 ImageHeaderEMF (org.apache.poi.sl.image.ImageHeaderEMF)1 Test (org.junit.Test)1