java文字段落样式_3、docx4j一个包含多种样式的段落实现

http://www.chendd.cn/information/viewInformation/other/252.a

如题,本文使用编程式的方式去实现一个段落文本的各种样式操作,跟前篇文章中是同样的道理,我们一样先采用草稿的方式去观察这种多样式段落的xml结构,再将这种xml结构转换为使用Java对象的方式去处理,关于本段落的文本所有涉及到的样式有:段落字体、文本大小、颜A色、居中、粗体、斜体、删除线(中线)、下划线,最终实现效果图参考如下:

1539495861038072193.png.image

参考代码实现如下:

package cn.chendd.docx4j;

import java.io.File;

import java.math.BigInteger;

import org.docx4j.jaxb.Context;

import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart;

import org.docx4j.wml.BooleanDefaultTrue;

import org.docx4j.wml.Color;

import org.docx4j.wml.HpsMeasure;

import org.docx4j.wml.Jc;

import org.docx4j.wml.JcEnumeration;

import org.docx4j.wml.ObjectFactory;

import org.docx4j.wml.P;

import org.docx4j.wml.PPr;

import org.docx4j.wml.R;

import org.docx4j.wml.RFonts;

import org.docx4j.wml.RPr;

import org.docx4j.wml.Text;

import org.docx4j.wml.U;

import org.docx4j.wml.UnderlineEnumeration;

public class TitleTest {

ObjectFactory factory = Context.getWmlObjectFactory();

public static void main(String[] args) throws Exception {

new TitleTest();

}

public TitleTest() throws Exception{

String outPath = System.getProperty("user.dir") + "/template/out/多样式段落.docx";

WordprocessingMLPackage wordPackage = WordprocessingMLPackage.createPackage();

MainDocumentPart mainDocumentPart = wordPackage.getMainDocumentPart();

mainDocumentPart.addObject(createTitle());

wordPackage.save(new File(outPath));

}

public P createTitle(){

RPr rpr = factory.createRPr();

RFonts font = new RFonts();

//设置字体

font.setAscii("宋体");

font.setEastAsia("宋体");//经测试发现这个设置生效

rpr.setRFonts(font);

//设置颜色

Color color = new Color();

color.setVal("ABCDEF");

rpr.setColor(color);

//设置字体大小

HpsMeasure fontSize = new HpsMeasure();

fontSize.setVal(new BigInteger("48"));

rpr.setSzCs(fontSize);

rpr.setSz(fontSize);

//设置粗体

BooleanDefaultTrue bold = factory.createBooleanDefaultTrue();

bold.setVal(Boolean.TRUE);

rpr.setB(bold);

//设置斜体

BooleanDefaultTrue ltalic = new BooleanDefaultTrue();

rpr.setI(ltalic);

//设置删除线

BooleanDefaultTrue deleteLine = new BooleanDefaultTrue();

deleteLine.setVal(Boolean.TRUE);

rpr.setStrike(deleteLine);

//设置下划线

U u = factory.createU();

u.setVal(UnderlineEnumeration.SINGLE);

u.setVal(UnderlineEnumeration.DOUBLE);//双下划线

u.setVal(UnderlineEnumeration.DASH);//虚线

u.setVal(UnderlineEnumeration.WAVE);//波浪线

rpr.setU(u);

//设置显示文本

Text text = factory.createText();

text.setValue("雪地里走");

R r = factory.createR();

r.getContent().add(text);

r.setRPr(rpr);

P p = factory.createP();

//设置段落居中

PPr ppr = new PPr();

Jc jc = new Jc();

jc.setVal(JcEnumeration.LEFT);

jc.setVal(JcEnumeration.RIGHT);

jc.setVal(JcEnumeration.CENTER);

ppr.setJc(jc);

p.setPPr(ppr);

p.getContent().add(r);

return p;

}

}

同时多说一下,在document对象下还提供有一些便捷创建段落文本的实现,如addStyledParagraphOfText方法中就可以根据样式id去快捷创建样式文本,样式id可参考如下:“Title”、“Subtitle”、“Header”,,Header1。。。等,在源码org.docx4j.model.PropertyResolver中可以查看到。

附上代码中的生成文件下载:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值