
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