Example usage for org.apache.poi.openxml4j.opc PackagingURIHelper createPartName

List of usage examples for org.apache.poi.openxml4j.opc PackagingURIHelper createPartName

Introduction

In this page you can find the example usage for org.apache.poi.openxml4j.opc PackagingURIHelper createPartName.

Prototype

public static PackagePartName createPartName(String partName) throws InvalidFormatException 

Source Link

Document

Create an OPC compliant part name.

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  a2s. com*/
    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   w w w  . j  a v a2 s . c o  m
    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 generate a new unique package part name within a PowerPoint zip file, given a base name
 *   which has a number before the file extension.
 * @param opcPackage the PowerPoint zip package.
 * @param baseName the original name.//from  w  ww  .java2s.c  o  m
 * @return a new unique package part name with an incremented number if the old name had a number before the file extension,
 *         or the old name otherwise.
 * @throws InvalidFormatException if there was an exception while generating the new name.
 */
private static PackagePartName generateNewName(final OPCPackage opcPackage, final String baseName)
        throws InvalidFormatException {
    final Pattern pattern = Pattern.compile("(.*?)(\\d+)(\\.\\w+)?$");

    final Matcher matcher = pattern.matcher(baseName);

    if (matcher.find()) {
        int num = Integer.parseInt(matcher.group(2));

        for (int ii = num + 1; ii < Integer.MAX_VALUE; ++ii) {
            final PackagePartName testName = PackagingURIHelper
                    .createPartName(matcher.group(1) + ii + matcher.group(3));

            if (opcPackage.getPart(testName) == null) {
                return testName;
            }
        }
    }

    // If the document doesn't have a numeric extension, just return it
    return PackagingURIHelper.createPartName(baseName);
}

From source file:com.vodafone.poms.ii.helpers.ExportManager.java

private static String addFile(XSSFSheet sh, String filePath, double oleId)
        throws IOException, InvalidFormatException {
    File file = new File(filePath);
    FileInputStream fin = new FileInputStream(file);
    byte[] data;/*from w w w.  j a v a 2  s .c  o  m*/
    data = new byte[fin.available()];
    fin.read(data);
    Ole10Native ole10 = new Ole10Native(file.getAbsolutePath(), file.getAbsolutePath(), file.getAbsolutePath(),
            data);

    ByteArrayOutputStream bos = new ByteArrayOutputStream(500);
    ole10.writeOut(bos);

    POIFSFileSystem poifs = new POIFSFileSystem();
    poifs.getRoot().createDocument(Ole10Native.OLE10_NATIVE, new ByteArrayInputStream(bos.toByteArray()));

    poifs.getRoot().setStorageClsid(ClassID.OLE10_PACKAGE);

    final PackagePartName pnOLE = PackagingURIHelper
            .createPartName("/xl/embeddings/oleObject" + oleId + Math.random() + ".bin");
    final PackagePart partOLE = sh.getWorkbook().getPackage().createPart(pnOLE,
            "application/vnd.openxmlformats-officedocument.oleObject");
    PackageRelationship prOLE = sh.getPackagePart().addRelationship(pnOLE, TargetMode.INTERNAL,
            POIXMLDocument.OLE_OBJECT_REL_TYPE);
    OutputStream os = partOLE.getOutputStream();
    poifs.writeFilesystem(os);
    os.close();
    poifs.close();

    return prOLE.getId();

}

From source file:com.vodafone.poms.ii.helpers.ExportManager.java

private static String addImageToSheet(XSSFSheet sh, int imgId, int pictureType) throws InvalidFormatException {
    final PackagePartName pnIMG = PackagingURIHelper.createPartName(
            "/xl/media/image" + (imgId + 1) + (pictureType == Workbook.PICTURE_TYPE_PNG ? ".png" : ".jpeg"));
    PackageRelationship prIMG = sh.getPackagePart().addRelationship(pnIMG, TargetMode.INTERNAL,
            PackageRelationshipTypes.IMAGE_PART);
    return prIMG.getId();
}

From source file:de.kiwiwings.jasperreports.exporter.PptxShapeExporter.java

License:Open Source License

protected void embedFonts() throws JRException, IOException {
    RepositoryUtil ru = RepositoryUtil.getInstance(jasperReportsContext);

    List<FontFamily> ferList = jasperReportsContext.getExtensions(FontFamily.class);
    if (ferList == null || ferList.size() == 0)
        return;/*from  w  w  w  .  j av a 2 s . c  o m*/

    FontFactory fontfac = FontFactory.getInstance();
    EOTWriter conv = new EOTWriter(true); // generate MicroTypeExpress (mtx) fonts

    CTEmbeddedFontList fontList = null;

    boolean anyFontsEmbedded = false;
    for (FontFamily ff : ferList) {
        if (!"embed".equals(ff.getExportFont(PPTX_EXPORTER_KEY))) {
            // don't export font
            continue;
        }
        anyFontsEmbedded = true;

        // "<p:font typeface=\"AllianzLogo\" pitchFamily=\"49\" charset=\"2\"/><p:regular r:id=\"rId13\"/>"
        FontFace ffTypes[] = { ff.getNormalFace(), ff.getBoldFace(), ff.getItalicFace(),
                ff.getBoldItalicFace() };

        CTEmbeddedFontListEntry fntEntry = null;

        for (int i = 0; i < 4; i++) {
            if (ffTypes[i] == null)
                continue;
            String fileRelPath = ffTypes[i].getTtf();
            String fntDataName = fileRelPath.replaceAll(".*/(.*).ttf", "$1.fntdata");
            byte fontBytes[] = ru.getBytesFromLocation(fileRelPath);

            Font fonts[] = fontfac.loadFonts(fontBytes);
            assert (fonts != null && fonts.length == 1);

            WritableFontData eotFont = conv.convert(fonts[0]);

            PackagePartName partName;
            try {
                partName = PackagingURIHelper.createPartName("/ppt/fonts/" + fntDataName);
            } catch (InvalidFormatException e) {
                throw new IOException(e);
            }
            PackagePart part = ppt.getPackage().createPart(partName, "application/x-fontdata");
            OutputStream partOs = part.getOutputStream();
            eotFont.copyTo(partOs);
            partOs.close();

            PackageRelationship prs = ppt.getPackagePart().addRelationship(partName, TargetMode.INTERNAL,
                    "http://schemas.openxmlformats.org/officeDocument/2006/relationships/font");

            if (fontList == null) {
                fontList = ppt.getCTPresentation().addNewEmbeddedFontLst();
            }
            if (fntEntry == null) {
                fntEntry = fontList.addNewEmbeddedFont();
                CTTextFont fnt = fntEntry.addNewFont();
                fnt.setTypeface(ff.getName());
                // TODO set charset / pitchFamily
            }

            CTEmbeddedFontDataId fntId = null;
            switch (i) {
            case 0:
                fntId = fntEntry.addNewRegular();
                break;
            case 1:
                fntId = fntEntry.addNewBold();
                break;
            case 2:
                fntId = fntEntry.addNewItalic();
                break;
            case 3:
                fntId = fntEntry.addNewBoldItalic();
                break;
            }

            fntId.setId(prs.getId());
        }
    }

    if (anyFontsEmbedded) {
        CTPresentation pres = ppt.getCTPresentation();
        pres.setEmbedTrueTypeFonts(true);
        pres.setSaveSubsetFonts(true);
    }
}

From source file:mj.ocraptor.extraction.tika.parser.microsoft.ooxml.XSLFPowerPointExtractorDecorator.java

License:Apache License

/**
 * In PowerPoint files, slides have things embedded in them, and slide
 * drawings which have the images//  ww  w .  j a v  a  2  s  .  com
 */
@Override
protected List<PackagePart> getMainDocumentParts() throws TikaException {
    List<PackagePart> parts = new ArrayList<PackagePart>();
    XMLSlideShow slideShow = (XMLSlideShow) extractor.getDocument();
    XSLFSlideShow document = null;
    try {
        document = slideShow._getXSLFSlideShow(); // TODO Avoid this in future
    } catch (Exception e) {
        throw new TikaException(e.getMessage()); // Shouldn't happen
    }

    for (CTSlideIdListEntry ctSlide : document.getSlideReferences().getSldIdList()) {
        // Add the slide
        PackagePart slidePart;
        try {
            slidePart = document.getSlidePart(ctSlide);
        } catch (IOException e) {
            throw new TikaException("Broken OOXML file", e);
        } catch (XmlException xe) {
            throw new TikaException("Broken OOXML file", xe);
        }
        parts.add(slidePart);

        // If it has drawings, return those too
        try {
            for (PackageRelationship rel : slidePart
                    .getRelationshipsByType(XSLFRelation.VML_DRAWING.getRelation())) {
                if (rel.getTargetMode() == TargetMode.INTERNAL) {
                    PackagePartName relName = PackagingURIHelper.createPartName(rel.getTargetURI());
                    parts.add(rel.getPackage().getPart(relName));
                }
            }
        } catch (InvalidFormatException e) {
            throw new TikaException("Broken OOXML file", e);
        }
    }

    return parts;
}

From source file:mj.ocraptor.extraction.tika.parser.microsoft.ooxml.XSSFExcelExtractorDecorator.java

License:Apache License

/**
 * In Excel files, sheets have things embedded in them, and sheet drawings
 * which have the images//from   w  ww. jav a 2  s  . c o m
 */
@Override
protected List<PackagePart> getMainDocumentParts() throws TikaException {
    List<PackagePart> parts = new ArrayList<PackagePart>();
    for (PackagePart part : sheetParts) {
        // Add the sheet
        parts.add(part);

        // If it has drawings, return those too
        try {
            for (PackageRelationship rel : part.getRelationshipsByType(XSSFRelation.DRAWINGS.getRelation())) {
                if (rel.getTargetMode() == TargetMode.INTERNAL) {
                    PackagePartName relName = PackagingURIHelper.createPartName(rel.getTargetURI());
                    parts.add(rel.getPackage().getPart(relName));
                }
            }
            for (PackageRelationship rel : part
                    .getRelationshipsByType(XSSFRelation.VML_DRAWINGS.getRelation())) {
                if (rel.getTargetMode() == TargetMode.INTERNAL) {
                    PackagePartName relName = PackagingURIHelper.createPartName(rel.getTargetURI());
                    parts.add(rel.getPackage().getPart(relName));
                }
            }
        } catch (InvalidFormatException e) {
            throw new TikaException("Broken OOXML file", e);
        }
    }

    return parts;
}

From source file:org.apache.tika.parser.microsoft.ooxml.SXSLFPowerPointExtractorDecorator.java

License:Apache License

private void addSlideParts(PackagePart slidePart, List<PackagePart> parts) {

    for (String relation : new String[] { XSLFRelation.VML_DRAWING.getRelation(),
            XSLFRelation.SLIDE_LAYOUT.getRelation(), XSLFRelation.NOTES_MASTER.getRelation(),
            XSLFRelation.NOTES.getRelation() }) {
        try {// w w w . j a v  a  2  s . c o m
            for (PackageRelationship packageRelationship : slidePart.getRelationshipsByType(relation)) {
                if (packageRelationship.getTargetMode() == TargetMode.INTERNAL) {
                    PackagePartName relName = PackagingURIHelper
                            .createPartName(packageRelationship.getTargetURI());
                    parts.add(packageRelationship.getPackage().getPart(relName));
                }
            }
        } catch (InvalidFormatException e) {

        }
    }
    //and slide of course
    parts.add(slidePart);

}

From source file:org.apache.tika.parser.microsoft.ooxml.XSLFPowerPointExtractorDecorator.java

License:Apache License

/**
 * In PowerPoint files, slides have things embedded in them,
 * and slide drawings which have the images
 *//*from  w  w w  .  j  a  v a 2s.  c o m*/
@Override
protected List<PackagePart> getMainDocumentParts() throws TikaException {
    List<PackagePart> parts = new ArrayList<>();
    XSLFSlideShow document = null;
    try {
        document = new XSLFSlideShow(extractor.getPackage());
    } catch (Exception e) {
        throw new TikaException(e.getMessage()); // Shouldn't happen
    }

    CTSlideIdList ctSlideIdList = document.getSlideReferences();
    if (ctSlideIdList != null) {
        for (int i = 0; i < ctSlideIdList.sizeOfSldIdArray(); i++) {
            CTSlideIdListEntry ctSlide = ctSlideIdList.getSldIdArray(i);
            // Add the slide
            PackagePart slidePart;
            try {
                slidePart = document.getSlidePart(ctSlide);
            } catch (IOException e) {
                throw new TikaException("Broken OOXML file", e);
            } catch (XmlException xe) {
                throw new TikaException("Broken OOXML file", xe);
            }
            parts.add(slidePart);

            // If it has drawings, return those too
            try {
                for (PackageRelationship rel : slidePart
                        .getRelationshipsByType(XSLFRelation.VML_DRAWING.getRelation())) {
                    if (rel.getTargetMode() == TargetMode.INTERNAL) {
                        PackagePartName relName = PackagingURIHelper.createPartName(rel.getTargetURI());
                        parts.add(rel.getPackage().getPart(relName));
                    }
                }
            } catch (InvalidFormatException e) {
                throw new TikaException("Broken OOXML file", e);
            }
        }
    }
    return parts;
}