Example usage for org.apache.poi.openxml4j.opc PackagePartName getName

List of usage examples for org.apache.poi.openxml4j.opc PackagePartName getName

Introduction

In this page you can find the example usage for org.apache.poi.openxml4j.opc PackagePartName getName.

Prototype

public String getName() 

Source Link

Document

Get this part name.

Usage

From source file:org.openflexo.docxparser.OpenXml2Html.java

License:Open Source License

private ParsedHtml getHtmlFromW_DrawingElement(Element element) {
    if (OpenXmlTag.getOpenXmlTag(element) != OpenXmlTag.w_drawing) {
        throw new InvalidElementException(
                "Cannot transform element to html, expecting element w:drawing and get '"
                        + element.getQualifiedName() + "'");
    }/*from   w  ww. ja  v  a 2s  .  c  om*/

    ParsedHtml parsedHtml = new ParsedHtml();

    try {
        Dom4jXPath xpath = new Dom4jXPath("descendant::a:blip");
        xpath.addNamespace(DocxXmlUtil.NAMESPACE_DRAWINGMAIN.getPrefix(),
                DocxXmlUtil.NAMESPACE_DRAWINGMAIN.getURI());

        Element ablipElement = (Element) xpath.selectSingleNode(element);
        if (ablipElement == null) {
            logger.warning("Cannot handle drawing tag: a:blip element not found");
            return parsedHtml;
        }

        String imageRid = ablipElement.attributeValue(DocxQName.getQName(OpenXmlTag.r_embed));
        if (imageRid == null) {
            logger.warning("Cannot handle drawing tag: r:embed attribute in a:blip element not found");
            return parsedHtml;
        }

        PackageRelationship imageRelationship = documentPart.getRelationship(imageRid);
        if (imageRelationship == null) {
            logger.warning("Cannot handle drawing tag: imageRelationship with id '" + imageRid + "' not found");
            return parsedHtml;
        }

        PackagePartName imagePartName = PackagingURIHelper.createPartName(imageRelationship.getTargetURI());
        PackagePart imagePart = documentPart.getPackage().getPart(imagePartName);
        String imageFileName;
        if (imagePart != null) {
            byte[] imageBytes = DocxXmlUtil.getByteArrayFromInputStream(imagePart.getInputStream());

            imageFileName = imagePartName.getName().substring(imagePartName.getName().lastIndexOf('/') + 1);

            parsedHtml.addNeededResource(new ParsedHtmlResource(imageFileName, imageBytes));
        } else {
            imageFileName = "";
        }
        Integer imageWidth = null;
        Integer imageHeight = null;

        Element extentElement = (Element) element.selectSingleNode("wp:inline/wp:extent");
        if (extentElement != null) {
            String imageCx = extentElement.attributeValue("cx");
            String imageCy = extentElement.attributeValue("cy");

            if (imageCx != null) {
                imageWidth = getEnglishMetricUnitInPixel(imageCx);
            }
            if (imageCy != null) {
                imageHeight = getEnglishMetricUnitInPixel(imageCy);
            }
        }

        parsedHtml.appendHtml("<img src=\"" + resourcesDirectory + imageFileName + "\"");
        if (imageWidth != null) {
            parsedHtml.appendHtml(" width=\"" + imageWidth + "\"");
        }
        if (imageHeight != null) {
            parsedHtml.appendHtml(" height=\"" + imageHeight + "\"");
        }
        parsedHtml.appendHtml(" />");

        return parsedHtml;
    } catch (InvalidFormatException e) {
        logger.log(Level.WARNING, "Cannot handle drawing tag: InvalidFormatException catched", e);
        return new ParsedHtml();
    } catch (IOException e) {
        logger.log(Level.WARNING, "Cannot handle drawing tag: IOException catched", e);
        return new ParsedHtml();
    } catch (JaxenException e) {
        logger.log(Level.WARNING, "Cannot handle drawing tag: JaxenException catched", e);
        return new ParsedHtml();
    }
}