All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.pptx4j.convert.out.svginhtml.PictureExporter Maven / Gradle / Ivy

Go to download

docx4j is a library which helps you to work with the Office Open XML file format as used in docx documents, pptx presentations, and xlsx spreadsheets.

There is a newer version: 11.4.11
Show newest version
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 {
	
	/**
	 * 
            
              
                
                
                  
                
                
              
              
                  <-----------------------
                
                
                  
                
              
              
                
                  
                  
                
                
                  
                
                
                
                  
                  
                  
                  
                
                
              
            
            
            	 */

	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
    	// 
// 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: 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) { /* */ if (size2d==null) { log.warn("wp:inline/wp:extent missing!"); return null; } return readDimensions(size2d.getCx(), size2d.getCy() ); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy