栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Apache POI XWPF向标头添加形状

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Apache POI XWPF向标头添加形状

由于

apache poi

XWPF
到目前为止,确实处于beta状态,因此只有在确切知道
Word
将其内容存储到中的情况下,此类事情才有可能
XML
。这样就可以解决的不足
apachepoi
XWPF
。您已经使用了一种变通方法,
blipID
当将图片添加到页眉或页脚中运行时,它可以纠正错过的情况。

发现如何

Word
将其内容存储到
XML
容器中不是火箭科学。一个
*.docx
文件就是一个
ZIP
文件。如果使用Zip软件将该文件解压缩,则只需查看一下XML文件即可。

据我所知,不

apachepoi
直接支持在Word文档中添加形状(在这种情况下为文本框)。对于这种使用低级别底层对象(在这种情况下
CTGroup
CTShape
)是必要的。

示例:(代码应自我解释)

import java.io.*;import org.apache.poi.util.Units;import org.apache.poi.xwpf.usermodel.*;import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPicture;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTxbxContent;import com.microsoft.schemas.vml.CTGroup;import com.microsoft.schemas.vml.CTShape;import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTabStop;import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTabJc;import org.w3c.dom.Node;import java.math.BigInteger;public class CreateWordHeaderFooterTextBoxPicture { public static void main(String[] args) throws Exception {  XWPFdocument doc= new XWPFdocument();  // the body content  XWPFParagraph paragraph = doc.createParagraph();  XWPFRun run=paragraph.createRun();    run.setText("The Body:");  paragraph = doc.createParagraph();  run=paragraph.createRun();    run.setText("Lorem ipsum....");  // create header start  XWPFHeaderFooterPolicy headerFooterPolicy = doc.createHeaderFooterPolicy();  XWPFHeader header = headerFooterPolicy.createHeader(XWPFHeaderFooterPolicy.DEFAULT);  // header's first paragraph  paragraph = header.getParagraphArray(0);  if (paragraph == null) paragraph = header.createParagraph();  paragraph.setAlignment(ParagraphAlignment.LEFT);  // create tab stops  CTTabStop tabStop = paragraph.getCTP().getPPr().addNewTabs().addNewTab();  tabStop.setVal(STTabJc.CENTER);  int twipsPerInch =  1440;  tabStop.setPos(BigInteger.valueOf(3 * twipsPerInch));  tabStop = paragraph.getCTP().getPPr().getTabs().addNewTab();  tabStop.setVal(STTabJc.RIGHT);  twipsPerInch =  1440;  tabStop.setPos(BigInteger.valueOf(6 * twipsPerInch));  // first run in header's first paragraph, to be for first text box  run = paragraph.createRun();  // create inline text box in run  CTGroup ctGroup = CTGroup.Factory.newInstance();  CTShape ctShape = ctGroup.addNewShape();  ctShape.setStyle("width:80pt;height:24pt");  CTTxbxContent ctTxbxContent = ctShape.addNewTextbox().addNewTxbxContent();  XWPFParagraph textboxparagraph = new XWPFParagraph(ctTxbxContent.addNewP(), (IBody)header);  XWPFRun textboxrun = textboxparagraph.createRun();  textboxrun.setText("The TextBox 1...");  textboxrun.setFontSize(10);  Node ctGroupNode = ctGroup.getDomNode();   CTPicture ctPicture = CTPicture.Factory.parse(ctGroupNode);  CTR cTR = run.getCTR();  cTR.addNewPict();  cTR.setPictArray(0, ctPicture);  // add tab to run  run.addTab();  // second run in header's first paragraph, to be for logo picture  run = paragraph.createRun();  // add the picture in the headers run  String imgFile="Logo.png";  XWPFPicture picture = run.addPicture(new FileInputStream(imgFile), XWPFdocument.PICTURE_TYPE_PNG, imgFile, Units.toEMU(195), Units.toEMU(22));  String blipID = "";  for(XWPFPictureData picturedata: header.getAllPackagePictures()) {   blipID = header.getRelationId(picturedata);  }  picture.getCTPicture().getBlipFill().getBlip().setEmbed(blipID);  // add tab to run  run.addTab();  // third run in header's first paragraph, to be for second text box  run = paragraph.createRun();  // create inline text box in run  ctGroup = CTGroup.Factory.newInstance();  ctShape = ctGroup.addNewShape();  ctShape.setStyle("width:80pt;height:24pt");  ctTxbxContent = ctShape.addNewTextbox().addNewTxbxContent();  textboxparagraph = new XWPFParagraph(ctTxbxContent.addNewP(), (IBody)header);  textboxrun = textboxparagraph.createRun();  textboxrun.setText("The TextBox 2...");  textboxrun.setFontSize(10);  ctGroupNode = ctGroup.getDomNode();   ctPicture = CTPicture.Factory.parse(ctGroupNode);  cTR = run.getCTR();  cTR.addNewPict();  cTR.setPictArray(0, ctPicture);  // create header end  // create footer start  XWPFFooter footer = headerFooterPolicy.createFooter(XWPFHeaderFooterPolicy.DEFAULT);  paragraph = footer.getParagraphArray(0);  if (paragraph == null) paragraph = header.createParagraph();  paragraph.setAlignment(ParagraphAlignment.CENTER);  run = paragraph.createRun();    run.setText("The Footer:");  doc.write(new FileOutputStream("test.docx")); }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号