Example usage for org.apache.poi.xslf.usermodel XMLSlideShow getPackage

List of usage examples for org.apache.poi.xslf.usermodel XMLSlideShow getPackage

Introduction

In this page you can find the example usage for org.apache.poi.xslf.usermodel XMLSlideShow getPackage.

Prototype

public OPCPackage getPackage() 

Source Link

Document

Get the assigned OPCPackage

Usage

From source file:AddAudioToPptx.java

License:Apache License

public static void main(String[] args) throws Exception {
    URL video = new URL("http://archive.org/download/test-mpeg/test-mpeg.mpg");
    // URL video = new URL("file:test-mpeg.mpg");

    XMLSlideShow pptx = new XMLSlideShow();

    // add video file
    String videoFileName = "lego_edsheeran.mp3";
    PackagePartName partName = PackagingURIHelper.createPartName("/ppt/media/" + videoFileName);
    PackagePart part = pptx.getPackage().createPart(partName, "audio/mpeg");
    OutputStream partOs = part.getOutputStream();
    //InputStream fis = video.openStream();
    FileInputStream fis = new FileInputStream(videoFileName);
    byte buf[] = new byte[1024];
    for (int readBytes; (readBytes = fis.read(buf)) != -1; partOs.write(buf, 0, readBytes))
        ;/*from ww  w.j a  v a 2  s  .c o  m*/
    fis.close();
    partOs.close();

    XSLFSlide slide1 = pptx.createSlide();

    byte[] picture = IOUtils.toByteArray(new FileInputStream("audio.png"));

    //adding the image to the presentation
    XSLFPictureData idx = pptx.addPicture(picture, XSLFPictureData.PictureType.PNG);

    //creating a slide with given picture on it
    XSLFPictureShape pv1 = slide1.createPicture(idx);

    //XSLFPictureShape pv1 = // addPreview(pptx, slide1, part, 5, 50, 80);
    addAudio(pptx, slide1, part, pv1, 5);
    addTimingInfo(slide1, pv1);
    //XSLFPictureShape pv2 = addPreview(pptx, slide1, part, 9, 50, 250);
    //addVideo(pptx, slide1, part, pv2, 9);
    //addTimingInfo(slide1, pv2);

    FileOutputStream fos = new FileOutputStream("pptx-with-audio.pptx");
    pptx.write(fos);
    fos.close();

    pptx.close();
}

From source file:AddVideoToPptx.java

License:Apache License

public static void main(String[] args) throws Exception {
    URL video = new URL("http://archive.org/download/test-mpeg/test-mpeg.mpg");
    // URL video = new URL("file:test-mpeg.mpg");

    XMLSlideShow pptx = new XMLSlideShow();

    // add video file
    String videoFileName = video.getPath().substring(video.getPath().lastIndexOf('/') + 1);
    PackagePartName partName = PackagingURIHelper.createPartName("/ppt/media/" + videoFileName);
    PackagePart part = pptx.getPackage().createPart(partName, "video/mpeg");
    OutputStream partOs = part.getOutputStream();
    //InputStream fis = video.openStream();
    FileInputStream fis = new FileInputStream("Lea Michele - Cannonball.mp4");
    byte buf[] = new byte[1024];
    for (int readBytes; (readBytes = fis.read(buf)) != -1; partOs.write(buf, 0, readBytes))
        ;//from ww  w  . ja  va2 s.  com
    fis.close();
    partOs.close();

    XSLFSlide slide1 = pptx.createSlide();
    XSLFPictureShape pv1 = addPreview(pptx, slide1, part, 5, 50, 80);
    addVideo(pptx, slide1, part, pv1, 5);
    addTimingInfo(slide1, pv1);
    //XSLFPictureShape pv2 = addPreview(pptx, slide1, part, 9, 50, 250);
    //addVideo(pptx, slide1, part, pv2, 9);
    //addTimingInfo(slide1, pv2);

    FileOutputStream fos = new FileOutputStream("pptx-with-video.pptx");
    pptx.write(fos);
    fos.close();

    pptx.close();
}

From source file:com.hp.autonomy.frontend.reports.powerpoint.PowerPointServiceImpl.java

License:MIT License

/**
 * Utility function to write a chart object to a slide based on a template.
 * Creates new copies of referred objects in the chart, e.g. colors1.xml and style1.xml, and writes the Excel
 *   workbook data to new files in the PowerPoint .zip structure.
 * @param pptx the presentation to add to.
 * @param slide the slide to add to.//  www  . j  a va  2s  .c  o  m
 * @param templateChart the original template chart XML reference object from the template.
 * @param modifiedChart the new chart XML object.
 * @param workbook the Excel workbook data corresponding to the chart XML data.
 * @param relId the relation id for the new chart.
 * @throws IOException if there's IO errors working with the chart.
 * @throws InvalidFormatException if there's errors generating new package part names for the new copies of the data.
 */
private static void writeChart(final XMLSlideShow pptx, final XSLFSlide slide, final XSLFChart templateChart,
        final CTChartSpace modifiedChart, final XSSFWorkbook workbook, final String relId)
        throws IOException, InvalidFormatException {
    final OPCPackage opcPackage = pptx.getPackage();
    final PackagePartName chartName = generateNewName(opcPackage,
            templateChart.getPackagePart().getPartName().getURI().getPath());

    final ByteArrayOutputStream baos = new ByteArrayOutputStream();
    XmlOptions xmlOptions = new XmlOptions(DEFAULT_XML_OPTIONS);
    xmlOptions.setSaveSyntheticDocumentElement(
            new QName(CTChartSpace.type.getName().getNamespaceURI(), "chartSpace", "c"));
    modifiedChart.save(baos, xmlOptions);

    final PackagePart chartPart = opcPackage.createPart(chartName, XSLFRelation.CHART.getContentType(), baos);

    slide.getPackagePart().addRelationship(chartName, TargetMode.INTERNAL, XSLFRelation.CHART.getRelation(),
            relId);

    for (final POIXMLDocumentPart.RelationPart part : templateChart.getRelationParts()) {
        final ByteArrayOutputStream partCopy = new ByteArrayOutputStream();
        final URI targetURI = part.getRelationship().getTargetURI();

        final PackagePartName name = generateNewName(opcPackage, targetURI.getPath());

        final String contentType = part.getDocumentPart().getPackagePart().getContentType();

        if ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet".equals(contentType)) {
            workbook.write(partCopy);
        } else {
            IOUtils.copy(part.getDocumentPart().getPackagePart().getInputStream(), partCopy);
        }

        opcPackage.createPart(name, contentType, partCopy);
        chartPart.addRelationship(name, TargetMode.INTERNAL, part.getRelationship().getRelationshipType());
    }
}