Package org.pptx4j.convert.out.svginhtml

Source Code of org.pptx4j.convert.out.svginhtml.PictureExporter

package org.pptx4j.convert.out.svginhtml;

import javax.xml.bind.JAXBException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.docx4j.XmlUtils;
import org.docx4j.dml.CTBlip;
import org.docx4j.dml.CTPoint2D;
import org.docx4j.dml.CTPositiveSize2D;
import org.docx4j.model.images.AbstractWordXmlPicture;
import org.docx4j.openpackaging.parts.Part;
import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;

public class PictureExporter extends AbstractWordXmlPicture {
 
  /**
   *
            <p:pic>
              <p:nvPicPr>
                <p:cNvPr id="1026" name="Picture 2"/>
                <p:cNvPicPr>
                  <a:picLocks noChangeAspect="1" noChangeArrowheads="1"/>
                </p:cNvPicPr>
                <p:nvPr/>
              </p:nvPicPr>
              <p:blipFill>
                <a:blip r:embed="rId2"/>  <-----------------------
                <a:srcRect/>
                <a:stretch>
                  <a:fillRect/>
                </a:stretch>
              </p:blipFill>
              <p:spPr bwMode="auto">
                <a:xfrm>
                  <a:off x="1357290" y="3643314"/>
                  <a:ext cx="619125" cy="742950"/>
                </a:xfrm>
                <a:prstGeom prst="rect">
                  <a:avLst/>
                </a:prstGeom>
                <a:noFill/>
                <a:ln w="9525">
                  <a:noFill/>
                  <a:miter lim="800000"/>
                  <a:headEnd/>
                  <a:tailEnd/>
                </a:ln>
                <a:effectLst/>
              </p:spPr>
            </p:pic>
           
               */

  protected static Logger log = LoggerFactory.getLogger(PictureExporter.class)

  public static DocumentFragment createHtmlImg(
      SvgConversionContext context,
        NodeIterator wpInline) {

      PictureExporter converter = createPicture(context, wpInline);
     
      DocumentFragment df = getHtmlDocumentFragment(converter);
     
      // Now wrap
      // <div style="position: absolute; width:300px; height:39px; left:360px; top:255px; border: red dashed;">
      // around it
      CTPoint2D offset = converter.pic.getSpPr().getXfrm().getOff();
      Dimensions xy = converter.readDimensions( offset.getX(), offset.getY() );
     
      /*
       *  TODO, USE:
       * 
       *         // Geometrical transforms
      CTTransform2D xfrm = cxnSp.getSpPr().getXfrm();
      Box b = new Box(xfrm.getOff().getX(), xfrm.getOff().getY(),
          xfrm.getExt().getCx(), xfrm.getExt().getCy() );
     
      if (xfrm.getRot()!=0) {
        b.rotate(xfrm.getRot());
      }
      if (xfrm.isFlipH() ) {
        b.flipH();
      }
      if (xfrm.isFlipV() ) {
        b.flipV();
      }
     
      // Convert from EMU to pixels
      b.toPixels();

       *
       */
     
      Element div = df.getOwnerDocument().createElement("div");
     
      div.setAttribute("style", "position:absolute; left:" + xy.width + "px; top:" + xy.height + "px;");
     
      Node img = df.getFirstChild();
     
      df.removeChild(img);
      df.appendChild(div);
     
      div.appendChild(img);
     
      return df;

    }
 
 
  org.pptx4j.pml.Pic pic=null;
 
    public static PictureExporter createPicture(SvgConversionContext context,
        NodeIterator anchorOrInline) {
     
      PictureExporter converter = new PictureExporter();
     
     
     
    try {
        Node n = anchorOrInline.nextNode();
        converter.pic = (org.pptx4j.pml.Pic)XmlUtils.unmarshal(n, org.pptx4j.jaxb.Context.jcPML, org.pptx4j.pml.Pic.class);
    } catch (JAXBException e1) {
      e1.printStackTrace();
    }
   
   
    log.info("** image: " + converter.pic.getClass().getName() );
     
      if (converter.pic.getBlipFill()==null
          || converter.pic.getBlipFill().getBlip()==null) {
        log.error("blip missing!!");
        return null;               
      }
     
      CTBlip blip = converter.pic.getBlipFill().getBlip();
     
      String imgRelId = blip.getEmbed();     
      if (imgRelId!=null) {
        converter.handleImageRel(context.getImageHandler(), imgRelId,
            (Part)context.getResolvedLayout().relationships.getSourceP());
      } else if (blip.getLink()!=null) {
        converter.handleImageRel(context.getImageHandler(), blip.getLink(),
            (Part)context.getResolvedLayout().relationships.getSourceP());
      } else {
        log.error("not linked or embedded?!");
      }

      converter.dimensions = converter.readDimensions(
          converter.pic.getSpPr().getXfrm().getExt());
        // TODO: <a:off x="1357290" y="3643314"/>
     
    return converter;
  }

    private final int extentToPixelConversionFactor = 9525; //12700; 

   
    private Dimensions readDimensions(long x, long y) {

      Dimensions dimensions = new Dimensions();
     
    dimensions.width= (int) x / extentToPixelConversionFactor;
    dimensions.widthUnit = "px";

    dimensions.height= (int) y / extentToPixelConversionFactor;
    dimensions.heightUnit = "px";
     
      return dimensions;
    }
   
    private Dimensions readDimensions(CTPositiveSize2D size2d) {
     
      /*
              <p:spPr bwMode="auto">
                <a:xfrm>
                  <a:off x="1357290" y="3643314"/>
                  <a:ext cx="619125" cy="742950"/>
                </a:xfrm>
       */
      if (size2d==null) {
        log.warn("wp:inline/wp:extent missing!");
        return null;
      }
     
      return readDimensions(size2d.getCx(), size2d.getCy() );
     
    }
 
}
TOP

Related Classes of org.pptx4j.convert.out.svginhtml.PictureExporter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.