List of usage examples for org.apache.poi.openxml4j.opc PackagingURIHelper createPartName
public static PackagePartName createPartName(String partName) throws InvalidFormatException
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; }