操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作word文档的简单有效的技术iText,代码如下,各种操作都已经注释。

package com.itext;
import java.awt.Color;
import java.io.FileOutputStream;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.rtf.RtfWriter2;
/**
* @author typ
*
*/
public class TestItext { public TestItext() {
} public static void main(String[] args) throws Exception {
// 创建word文档,并设置纸张的大小
Document document = new Document(PageSize.A4);
RtfWriter2.getInstance(document, new FileOutputStream(
"D:/test/word.rtf"));
// 打开document
document.open();
// 设置字体,字号,加粗,颜色
Font font = new Font(Font.NORMAL, 20, Font.BOLD, new Color(255, 0, 0));
// 设置新的段落,使其字体为font
Paragraph p = new Paragraph("文书制作", font);
// 设置段落居中,其中1为居中对齐,2为右对齐,3为左对齐
p.setAlignment(1);
// 文档中加入该段落
document.add(p);
//调用系统的“楷体”字体,设置该段落时楷体
BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\simli.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
font = new Font(bf, 16, Font.NORMAL, new Color(0, 0, 0));
p = new Paragraph(
" itext可以实现插入段落,可以设置段落的缩进,居中,首行缩进,段前距,段后距。可以设置字体,字号,格式。功能比较齐全。",
font);
// 设置段落缩进
p.setIndentationLeft(20);
// 设置首行缩进
p.setFirstLineIndent(30f);
// 设置段后距和段前距
p.setSpacingAfter(10f);
p.setSpacingBefore(100f);
document.add(p);
p = new Paragraph(
"itext可以插入表格,设置表格的行列数,可以设置表格边框,可以设置表格位置,可以设置表格总宽度和每一列的宽度。单元格的插入和内容可控",
font);
document.add(p);
p = new Paragraph("itext可以插入图片,可以设置图片的大小,gif、jpg、png格式的图片都可以", font);
document.add(p);
// 创建有三列的表格
Table table = new Table(2, 3);
// 设置table的边框宽度为0
table.setBorderWidth(1f);
// table.setAbsWidth("120px");
// 设置表格右对齐,其中1为居中对齐,2为右对齐,3为左对齐
table.setAlignment(2);
// 设置各列的宽度
int[] widths = { 200, 100 };
table.setWidths(widths);
// table.setPadding(0);
// table.setSpacing(0); // 读取图片(参数为gif、jpg、png格式的图片都可以),设置图片大小
Image image = Image.getInstance("D:/test/1.jpg");
// Image img = Image.getInstance(new URL("http://xxx.com/logo.jpg)");
// 设置图片的绝对大小,宽和高
image.scaleAbsolute(50f, 50f);
// 设置图片居中显示
image.setAlignment(Image.MIDDLE);
// 创建单元格,并且将单元格内容设置为图片
Cell cell = new Cell(image);
// 设置单元格边框为0
cell.setBorder(0);
// cell.setHeader(true);
// cell.setColspan(3);// 设置表格为三列
// cell.setRowspan(3);// 设置表格为三行
table.addCell(cell);
// table.endHeaders();// 表头结束
table.addCell(cell);
cell = new Cell("该单元格的长度是200");
cell.setBorder(0);
table.addCell(cell);
cell = new Cell("该单元格的长度是100");
// cell.setWidth("10px");
table.addCell(cell);
// cell.setBorder(1);
// 设置垂直居中
cell.setVerticalAlignment(1);
// 设置水平居中
cell.setHorizontalAlignment(1);
// document.add(new Paragraph("用java生成word文件"));
document.add(table);
// 关闭document
document.close();
}
}

iText操作word文档总结的更多相关文章

  1. Java文件操作系列[3]——使用jacob操作word文档

    Java对word文档的操作需要通过第三方组件实现,例如jacob.iText.POI和java2word等.jacob组件的功能最强大,可以操作word,Excel等格式的文件.该组件调用的的是操作 ...

  2. C#操作Word文档(加密、解密、对应书签插入分页符)

    原文:C#操作Word文档(加密.解密.对应书签插入分页符) 最近做一个项目,客户要求对已经生成好的RTF文件中的内容进行分页显示,由于之前对这方面没有什么了解,后来在网上也找了相关的资料,并结合自己 ...

  3. 利用Python操作Word文档【图片】

    利用Python操作Word文档

  4. Struts2利用iText导出word文档(包含表格)以提供下载

    J2EE ExcelStrutsXML  在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...

  5. QTP操作word文档

    QTP可以对word文档进行操作,这里最主要展示的是向word文档写入内容,并保存的功能. Option explicit Dim wordApp Set wordApp = createobject ...

  6. c#中操作word文档-四、对象模型

    转自:http://blog.csdn.net/ruby97/article/details/7406806 Word对象模型  (.Net Perspective) 本文主要针对在Visual St ...

  7. python 操作word文档

    因为工作需要操作一些word文档,记录一下学习思路 #-*- encoding: utf8 -*- import win32com from win32com.client import Dispat ...

  8. 2.QT中操作word文档

     Qt/Windows桌面版提供了ActiveQt框架,用以为Qt和ActiveX提供完美结合.ActiveQt由两个模块组成: A   QAxContainer模块允许我们使用COM对象并且可以 ...

  9. C# 操作Word 文档——添加Word页眉、页脚和页码

    在Word文档中,我们可以通过添加页眉.页脚的方式来丰富文档内容.添加页眉.页脚时,可以添加时间.日期.文档标题,文档引用信息.页码.内容解释.图片/LOGO等多种图文信息.同时也可根据需要调整文字或 ...

随机推荐

  1. Android反编译-逆天的反编译

    Jar包的反编译: Java的世界是透明的,当编译java程序的时候,是将java源文件转成.class文件,java虚拟机去执行这些字节码从而得到执行java程序的目的.那么从.class文件能不能 ...

  2. C keyword register 并讨论共同使用嵌入式汇编

    C keyword register 并讨论共同使用嵌入式汇编 register 是C99 的keyword之中的一个. register 是储存类型之中的一个.这里仅讨论register 储存类型. ...

  3. 使用JDK自带的工具将中文转换为ascii码

    有时候在MyEclipse中,文件只能保存为“ISO-8859-1”的类型,而这种类型的文件时无法保存中文数据的,那么我们只能将中文数据经过Unicode编码才能往文件中保存,这里可以使用JDK自带的 ...

  4. VS2010 编译安装boost库

    实践是最好的办法..学习C++,想试试线程,然后打算用boost库,结果boost库编译差点吓到我..没看到比较完整的安装教程..一直耽搁.今天动手.完成了.方法记录如下:1.下载boost从boos ...

  5. Mono for Android 初学遇到的问题

    1.搭建开发环境: 在win7系统中,VS2012 可以用 C# 开发Android 应用程序,mono for andriod 破解成功. 在win server 2008 系统中 破解不成功,具体 ...

  6. 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时

    五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整 ...

  7. 积累的VC编程小技巧之滚动条

    1.设置滚动条的滚动大小 创建一个基于CScrollview的SDI Project(在第6步中选CScrollview) 若你已创建了,这步可以省略. 然后: 改为如 void CTestView: ...

  8. 让AllocateHwnd接受一般函数地址作参数(105篇博客)

    http://www.xuebuyuan.com/1889769.html Classes单元的AllocateHWnd函数是需要传入一个处理消息的类的方法的作为参数的,原型: function Al ...

  9. java entry

    我希望要一个ArrayList<Entry>,类似C++中的pair, 可是Map.Entry是个接口,不能实例化,能够像以下这样写 HashMap<Integer, Integer ...

  10. 详谈隐藏Tabbar的几种方法

    如今正在写的一个项目,涉及到了使用两个TabBar,然后我须要显示当中一个的时候,然后隐藏另外一个,可是中间却出现故障了.我查了一些资料,想总结一下关于TabBar的隐藏. 第一种方法是: //隐藏t ...