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

ars.file.office.CustomXWPFDocument Maven / Gradle / Ivy

The newest version!
package ars.file.office;

import java.io.InputStream;
import java.io.IOException;

import org.apache.xmlbeans.XmlToken;
import org.apache.xmlbeans.XmlException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.openxmlformats.schemas.drawingml.x2006.main.CTPositiveSize2D;
import org.openxmlformats.schemas.drawingml.x2006.main.CTNonVisualDrawingProps;
import org.openxmlformats.schemas.drawingml.x2006.wordprocessingDrawing.CTInline;

import ars.util.Strings;

/**
 * 自定义文档操作接口实现
 *
 * @author wuyongqiang
 */
public class CustomXWPFDocument extends XWPFDocument {
    private static final int EMU = 9525;

    public CustomXWPFDocument() {
        super();
    }

    public CustomXWPFDocument(OPCPackage pack) throws IOException {
        super(pack);
    }

    public CustomXWPFDocument(InputStream input) throws IOException {
        super(input);
    }

    @SuppressWarnings("deprecation")
    public void createPicture(XWPFParagraph paragraph, int id, int width, int height, String path) {
        width *= EMU;
        height *= EMU;
        String blipId = getAllPictures().get(id).getPackageRelationship().getId();
        CTInline inline = paragraph.createRun().getCTR().addNewDrawing().addNewInline();
        paragraph.createRun().setText(path);
        String picXml = new StringBuilder().append(
            "")
            .toString();
        inline.addNewGraphic().addNewGraphicData();
        try {
            XmlToken xmlToken = XmlToken.Factory.parse(picXml);
            inline.set(xmlToken);
        } catch (XmlException xe) {
            xe.printStackTrace();
        }
        inline.setDistT(0);
        inline.setDistB(0);
        inline.setDistL(0);
        inline.setDistR(0);

        CTPositiveSize2D extent = inline.addNewExtent();
        extent.setCx(width);
        extent.setCy(height);

        CTNonVisualDrawingProps props = inline.addNewDocPr();
        props.setId(id);
        props.setName(String.valueOf(id));
        props.setDescr(Strings.EMPTY_STRING);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy