900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java html转为word_Java如何将html转换成word

java html转为word_Java如何将html转换成word

时间:2019-03-11 10:52:02

相关推荐

java html转为word_Java如何将html转换成word

分成两部分处理:

1:apachehtmlpraser解析html,取里面的文本框,table,图片等信息:

publicclassTextendsTestCase{

privatestaticfinalLoggerlogger=Logger.getLogger(T.class);

/*

*测试ObjectFindVisitor的用法

*/

publicvoidtestImageVisitor(){

try{

ImageTagimgLink;

ObjectFindingVisitorvisitor=newObjectFindingVisitor(ImageTag.class);

Parserparser=newParser();

parser.setURL("");

parser.setEncoding(parser.getEncoding());

parser.visitAllNodesWith(visitor);

Node[]nodes=visitor.getTags();

for(inti=0;i

imgLink=(ImageTag)nodes[i];

logger.fatal("testImageVisitor()ImageURL="+imgLink.getImageURL());

logger.fatal("testImageVisitor()ImageLocation="+imgLink.extractImageLocn());

logger.fatal("testImageVisitor()SRC="+imgLink.getAttribute("SRC"));

}

}catch(Exceptione){

e.printStackTrace();

}

}

/*

*测试TagNameFilter用法

*/

publicvoidtestNodeFilter(){

try{

NodeFilterfilter=newTagNameFilter("IMG");

Parserparser=newParser();

parser.setURL("");

parser.setEncoding(parser.getEncoding());

NodeListlist=parser.extractAllNodesThatMatch(filter);

for(inti=0;i

logger.fatal("testNodeFilter()"+list.elementAt(i).toHtml());

}

}catch(Exceptione){

e.printStackTrace();

}

}

}

2:iText把解析出来的数据填入word

publicclassCreateWordDemo{

publicvoidcreateDocContext(Stringfile)throwsDocumentException,

IOException{

//设置纸张大小

Documentdocument=newDocument(PageSize.A4);

//建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中

RtfWriter2.getInstance(document,newFileOutputStream(file));

document.open();

//设置中文字体

BaseFontbfChinese=BaseFont.createFont("STSongStd-Light",

"UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);

//标题字体风格

FonttitleFont=newFont(bfChinese,12,Font.BOLD);

//正文字体风格

FontcontextFont=newFont(bfChinese,10,Font.NORMAL);

Paragraphtitle=newParagraph("标题");

//设置标题格式对齐方式

title.setAlignment(Element.ALIGN_CENTER);

title.setFont(titleFont);

document.add(title);

StringcontextString="iText是一个能够快速产生PDF文件的java类库。"

+"\n"//换行

+"iText的java类对于那些要产生包含文本,"

+"表格,图形的只读文档是很有用的。它的类库尤其与javaServlet有很好的给合。"

+"使用iText与PDF能够使你正确的控制Servlet的输出。";

Paragraphcontext=newParagraph(contextString);

//正文格式左对齐

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

//离上一段落(标题)空的行数

context.setSpacingBefore(5);

//设置第一行空的列数

context.setFirstLineIndent(20);

document.add(context);

//利用类FontFactory结合Font和Color可以设置各种各样字体样式

/**

*Font.UNDERLINE下划线,Font.BOLD粗体

*/

Paragraphunderline=newParagraph("下划线的实现",FontFactory.getFont(

FontFactory.HELVETICA_BOLDOBLIQUE,18,Font.UNDERLINE,

newColor(0,0,255)));

document.add(underline);

//设置Table表格

TableaTable=newTable(3);

intwidth[]={25,25,50};

aTable.setWidths(width);//设置每列所占比例

aTable.setWidth(90);//占页面宽度90%

aTable.setAlignment(Element.ALIGN_CENTER);//居中显示

aTable.setAlignment(Element.ALIGN_MIDDLE);//纵向居中显示

aTable.setAutoFillEmptyCells(true);//自动填满

aTable.setBorderWidth(1);//边框宽度

aTable.setBorderColor(newColor(0,125,255));//边框颜色

aTable.setPadding(2);//衬距,看效果就知道什么意思了

aTable.setSpacing(3);//即单元格之间的间距

aTable.setBorder(2);//边框

//设置表头

/**

*cell.setHeader(true);是将该单元格作为表头信息显示;

*cell.setColspan(3);指定了该单元格占3列;

*为表格添加表头信息时,要注意的是一旦表头信息添加完了之后,

*必须调用endHeaders()方法,否则当表格跨页后,表头信息不会再显示

*/

CellhaderCell=newCell("表格表头");

haderCell.setHeader(true);

haderCell.setColspan(3);

aTable.addCell(haderCell);

aTable.endHeaders();

FontfontChinese=newFont(bfChinese,12,Font.NORMAL,Color.GREEN);

Cellcell=newCell(newPhrase("这是一个测试的3*3Table数据",fontChinese));

cell.setVerticalAlignment(Element.ALIGN_TOP);

cell.setBorderColor(newColor(255,0,0));

cell.setRowspan(2);

aTable.addCell(cell);

aTable.addCell(newCell("#1"));

aTable.addCell(newCell("#2"));

aTable.addCell(newCell("#3"));

aTable.addCell(newCell("#4"));

Cellcell3=newCell(newPhrase("一行三列数据",fontChinese));

cell3.setColspan(3);

cell3.setVerticalAlignment(Element.ALIGN_CENTER);

aTable.addCell(cell3);

document.add(aTable);

document.add(newParagraph("\n"));

//添加图片

Imageimg=Image.getInstance("d:\img01800.jpg");

img.setAbsolutePosition(0,0);

img.setAlignment(Image.RIGHT);//设置图片显示位置

img.scaleAbsolute(12,35);//直接设定显示尺寸

img.scalePercent(50);//表示显示的大小为原尺寸的50%

img.scalePercent(25,12);//图像高宽的显示比例

img.setRotation(30);//图像旋转一定角度

document.add(img);

document.close();

}

/**

*@paramargs

*/

publicstaticvoidmain(String[]args){

CreateWordDemoword=newCreateWordDemo();

Stringfile="c:/demo1.doc";

try{

word.createDocContext(file);

}catch(DocumentExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

cell.setRowspan(lineNum)–这个API处理跨行的情况

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。