You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ki...@apache.org on 2020/12/03 19:00:37 UTC

svn commit: r1884075 - in /poi/trunk/src/examples/src/org/apache/poi/examples/xslf: LinkVideoToPptx.java PPTX2SVG.txt

Author: kiwiwings
Date: Thu Dec  3 19:00:37 2020
New Revision: 1884075

URL: http://svn.apache.org/viewvc?rev=1884075&view=rev
Log:
add example to link video to slideshow
PPTX2SVG.txt is not necessary anymore with PPTX2PNG providing that function

Added:
    poi/trunk/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java   (with props)
Removed:
    poi/trunk/src/examples/src/org/apache/poi/examples/xslf/PPTX2SVG.txt

Added: poi/trunk/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java?rev=1884075&view=auto
==============================================================================
--- poi/trunk/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java (added)
+++ poi/trunk/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java Thu Dec  3 19:00:37 2020
@@ -0,0 +1,98 @@
+package org.apache.poi.examples.xslf;
+
+import static org.apache.poi.openxml4j.opc.PackageRelationshipTypes.CORE_PROPERTIES_ECMA376_NS;
+
+import java.awt.Rectangle;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.namespace.QName;
+
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.openxml4j.opc.TargetMode;
+import org.apache.poi.sl.usermodel.PictureData;
+import org.apache.poi.xslf.usermodel.XMLSlideShow;
+import org.apache.poi.xslf.usermodel.XSLFPictureData;
+import org.apache.poi.xslf.usermodel.XSLFPictureShape;
+import org.apache.poi.xslf.usermodel.XSLFSlide;
+import org.apache.xmlbeans.XmlCursor;
+import org.openxmlformats.schemas.drawingml.x2006.main.CTHyperlink;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTApplicationNonVisualDrawingProps;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTExtension;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTPicture;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTTLCommonMediaNodeData;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTTLCommonTimeNodeData;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTTimeNodeList;
+import org.openxmlformats.schemas.presentationml.x2006.main.STTLTimeIndefinite;
+import org.openxmlformats.schemas.presentationml.x2006.main.STTLTimeNodeFillType;
+import org.openxmlformats.schemas.presentationml.x2006.main.STTLTimeNodeRestartType;
+import org.openxmlformats.schemas.presentationml.x2006.main.STTLTimeNodeType;
+
+public class LinkVideoToPptx {
+    public static void main(String[] args) throws IOException, URISyntaxException {
+        XMLSlideShow pptx = new XMLSlideShow();
+
+        String videoFileName = "file_example_MP4_640_3MG.mp4";
+        XSLFSlide slide1 = pptx.createSlide();
+
+        PackagePart pp = slide1.getPackagePart();
+        URI mp4uri = new URI("./"+videoFileName);
+        PackageRelationship prsEmbed1 = pp.addRelationship(mp4uri, TargetMode.EXTERNAL, "http://schemas.microsoft.com/office/2007/relationships/media");
+        PackageRelationship prsExec1 = pp.addRelationship(mp4uri, TargetMode.EXTERNAL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/video");
+
+
+        File previewJpg = new File("preview.jpg");
+        XSLFPictureData snap = pptx.addPicture(previewJpg, PictureData.PictureType.JPEG);
+        XSLFPictureShape pic1 = slide1.createPicture(snap);
+        pic1.setAnchor(new Rectangle(100, 100, 500, 400));
+
+        CTPicture xpic1 = (CTPicture)pic1.getXmlObject();
+        CTHyperlink link1 = xpic1.getNvPicPr().getCNvPr().addNewHlinkClick();
+        link1.setId("");
+        link1.setAction("ppaction://media");
+
+
+        CTApplicationNonVisualDrawingProps nvPr = xpic1.getNvPicPr().getNvPr();
+        nvPr.addNewVideoFile().setLink(prsExec1.getId());
+        CTExtension ext = nvPr.addNewExtLst().addNewExt();
+        ext.setUri("{DAA4B4D4-6D71-4841-9C94-3DE7FCFB9230}");
+
+        String p14Ns = "http://schemas.microsoft.com/office/powerpoint/2010/main";
+        XmlCursor cur = ext.newCursor();
+        cur.toEndToken();
+        cur.beginElement(new QName(p14Ns, "media", "p14"));
+        cur.insertNamespace("p14", p14Ns);
+        cur.insertAttributeWithValue(new QName(CORE_PROPERTIES_ECMA376_NS, "link"), prsEmbed1.getId());
+        cur.dispose();
+
+
+        CTSlide xslide = slide1.getXmlObject();
+        CTTimeNodeList ctnl;
+        if (!xslide.isSetTiming()) {
+            CTTLCommonTimeNodeData ctn = xslide.addNewTiming().addNewTnLst().addNewPar().addNewCTn();
+            ctn.setDur(STTLTimeIndefinite.INDEFINITE);
+            ctn.setRestart(STTLTimeNodeRestartType.NEVER);
+            ctn.setNodeType(STTLTimeNodeType.TM_ROOT);
+            ctnl = ctn.addNewChildTnLst();
+        } else {
+            ctnl = xslide.getTiming().getTnLst().getParArray(0).getCTn().getChildTnLst();
+        }
+        CTTLCommonMediaNodeData cmedia = ctnl.addNewVideo().addNewCMediaNode();
+        cmedia.setVol(80000);
+        CTTLCommonTimeNodeData ctn = cmedia.addNewCTn();
+        ctn.setFill(STTLTimeNodeFillType.HOLD);
+        ctn.setDisplay(false);
+        ctn.addNewStCondLst().addNewCond().setDelay(STTLTimeIndefinite.INDEFINITE);
+        cmedia.addNewTgtEl().addNewSpTgt().setSpid(""+pic1.getShapeId());
+
+
+        try (FileOutputStream fos = new FileOutputStream("mp4test/mp4test-poi.pptx")) {
+            pptx.write(fos);
+        }
+    }
+}

Propchange: poi/trunk/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java
------------------------------------------------------------------------------
    svn:eol-style = native



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org