package templates.util;
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.metadata.IIOMetadata;
import javax.imageio.stream.ImageInputStream;
import org.eclipse.emf.common.util.URI;
import org.eclipse.xtext.xdoc.xdoc.ImageRef;
import org.w3c.dom.Node;
public class PDFImageUtil {
public static String calcStyle(ImageRef ref) throws IOException {
URI uri = ref.eResource().getURI();
URI inPath = URI.createURI(ref.getPath()).resolve(uri);
ImageInputStream img = ImageIO.createImageInputStream(new File(inPath.toFileString()));
Iterator<ImageReader> imageReaders = ImageIO.getImageReaders(img);
ImageReader ir = imageReaders.next();
ir.setInput(img);
IIOMetadata imageMetadata = ir.getImageMetadata(0);
Node n = imageMetadata.getAsTree("javax_imageio_1.0");
float ppmm = 2.835f;
for(Node cn = n.getFirstChild(); cn != null; cn = cn.getNextSibling()) {
if(cn.getNodeName().equals("Dimension")) {
for(Node ccn = cn.getFirstChild(); ccn != null; ccn = ccn.getNextSibling()){
if(ccn.getNodeName().equals("HorizontalPixelSize")){
ppmm = 1/ Float.parseFloat(ccn.getAttributes().item(0).getNodeValue());
}
}
}
}
int width = ir.getWidth(0);
float effectiveWidth = width/ppmm;
if(effectiveWidth > 140){
return "width=\\textwidth";
} else
return "";
}
}