1、Itext简介
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。
Itext对word操作就像poi对Excel的操作一样,功能丰富。
2、Itext使用
(1)创建Document
就像新建Word文档一样,你只需要用Document document = new Document(PageSize.A4);创建一个Document对象。
注意:
PageSize.A4 设置word纸张大小,除此之外还有其他参数,一下为Itext的介绍
com.lowagie.text.Document.Document(Rectangle arg0, float marginLeft, float marginRight, float marginTop, float marginBottom)
第一个参数为设置纸张大小,如PageSize.A4
后面的四个float参数为设置word的页面左右上下边距
(2)创建对象后需要创建文档读写器
RtfWriter2.getInstance(document, new FileOutputStream(file));
建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。其中file为保存路径和文档名称如D:/test.doc。然后就是
document.open();打开文档进行读写
(3)文档添加元素
通过document.add()向文档中添加内容,添加的内容必须是Element元素,如Paragraph、Image、Table等常用元素。他们分别是文本段落、图片、表格。

①添加段落
创建段落对象Paragraph theme = new Paragraph(companyTheme);参数为String类型,常用属性设置:
设置位置:theme.setAlignment(Element.ALIGN_CENTER);参数为居中、居左、居右
设置前后距离:相当于行距theme.setSpacingBefore(90)、theme.setSpacingAfter(0)
设置字体:包括字体的大小、颜色、字体类型等。通过theme.setFont(ThemeFont);设置字体他需要Font类型的参数
创建Font对象,通过font设置字体
Font ThemeFont = new Font(setBaseFont(), 18, Font.BOLD);
// 设置标题字体的颜色
ThemeFont.setColor(new Color(0, 0, 129));

而Font需要BaseFont参数对象,创建BaseFont对象来设置字体,如:微软雅黑等
BaseFont macintosh =
BaseFont.createFont(“D:\201404042\ywsf.ttf”,
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
在网上有看到说Itext不能设置字体,是不对的通过basefont可以随意设置自己想要的字体。
②创建Table对象
Table table1 = new Table(4);// 创建该表格的列数,在本程序中设为4列
int width1[] = { 30, 30, 30, 30 };// 每列的单元格的宽度
table1.setWidths(width1);// 设置每列所占比例
table1.setWidth(90); // 占页面宽度 90%,相当于html中width属性
table1.setAlignment(Element.ALIGN_CENTER);//设置该表格中的元素水平方向居中显示
table1.setAutoFillEmptyCells(true); // 自动填满
table1.setBorderWidth(1); // 边框宽度
table1.setBorderColor(new Color(160, 32, 240)); // 边框颜色

通过table1.addCell()向表格中添加元素元素可以是cell对象也可以是字符串、也可以是图片,如果添加图片的话需要Image对象获取图片。如:
Image img = Image.getInstance(“d:/img.png”);
Cell cell = new Cell(img);
table1.addCell(cell);
项目中的效果如下:利用Jfreechart统计图和Itext结合生成的

然后可以通过document.add()添加到文档中。用到table需要设置它的属性如常用的合并单元格、设置背景色如下图设置:通过设置cell.setColspan(int num); cell.setRowspan(int num);设置单元格的合并。和常用的设置背景border一样background、color 、border等设置

最后关闭document读写document.close();
以下是一个完整的小Demo根据实际调整代码运行。FontSettingC为自定义的设置样式。
Jfreechart生成图参考前面的案例。
package com.lizj_cdoc.exp;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import com.lizj_cdoc.Utils.FontSettingC;
import com.lizj_cdoc.jfreechart.CreateChart;
import com.lizj_cdoc.jfreechart.CreateJfreeBarChart;
import com.lizj_cdoc.jfreechart.CreateTable;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.rtf.RtfWriter2;

public class ExpModelPersonal {
public void createDocFile(String file) throws DocumentException,
IOException {
// 设置纸张大小
Document document = new Document(PageSize.A4);
// 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中
RtfWriter2.getInstance(document, new FileOutputStream(file));
document.open();
// 将Phrases添加到document文档
document.add(FontSettingC.setFirstTitle(“报告目录”));
document.add(FontSettingC
.setSecondTitle(“(一)领导力行为指标\n” +
“(二)评估整体概况\n” +
“(三)优势与待发展\n” +
“(四)自我认知偏差\n” +
“(五)他评分歧(他评差异大的行为;不同人眼中表现突出的行为)\n” +
“(六)发展建议\n” +
“(七)行动计划\n” +
“(八)附录:文本题反馈\n” +
“(九)附录:得分详情\n”));

              document.add(getTargetSpread());document.close();
}public static Image setImage(String url)throws BadElementException, MalformedURLException, IOException {// 添加图片Image img_spider = Image.getInstance(url);// 设置图片大小(H,W)img_spider.scaleAbsolute(300, 130);img_spider.setAlignment(Element.ALIGN_CENTER);img_spider.setSpacingBefore(50);return img_spider;
}

public static Table getTargetSpread() throws DocumentException,
IOException, ParseException {
Table table1 = new Table(12);// 创建该表格的列数,在本程序中设为5列
int width1[] = { 25, 10, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 };// 每列的单元格的宽度
table1.setWidths(width1);// 设置每列所占比例
table1.setWidth(100); // 占页面宽度 90%,相当于html中width属性
table1.setAlignment(Element.ALIGN_CENTER);// 设置该表格中的元素水平方向居中显示
table1.setAutoFillEmptyCells(true); // 自动填满
table1.setBorderColor(new Color(160, 32, 240)); // 边框颜色
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“素质项”, 2));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“得分”, 2));
table1.addCell(ItextTableStyle.deepBlue(“人员分布”, 4));
table1.addCell(ItextTableStyle.deepBlue(“比例分布”, 4));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“总分居于前20%的是”, 2));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“总分居于后10%的是”, 2));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“1.0分\n↓\n2.0分”, 1));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“2.0分\n↓\n3.0分”, 1));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“3.0分\n↓\n4.0分”, 1));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“4.0分\n↓\n5.0分”, 1));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“1.0分\n↓\n2.0分”, 1));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“2.0分\n↓\n3.0分”, 1));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“3.0分\n↓\n4.0分”, 1));
table1.addCell(ItextTableStyle.DeepBlueRowSpan(“4.0分\n↓\n5.0分”, 1));
Cell cell = new Cell(setImage(“d:/img.png”));
Cell. setColspan (12);
table1.addCell(cell);
}
}

使用Itext结合Jfreechart图表导出带图表的word文档相关推荐

  1. java freemarker 导出富文本到Word文档

    最近一直在加班 导致看到代码就想吐 今天抽出时间来记录一下 用freemaker导出富文本信息 之前使用freemaker导出图片等信息时 使用的是xml方式,不明白的 可以看 freemaker生成 ...

  2. c#导出包含图片的word文档

    object oMissing = Missing.Value;          object oEndOfDoc = "\\endofdoc"; //指定编码          ...

  3. word导出html乱码怎么办,Word文档文件变成乱码如何完全修复?-修复百科

    一.删除格式信息法 Word文档的最后一个段落符号记录着全篇文档的格式信息,有时删除这些格式信息就可以恢复变成乱码的文件. 1.在打开损坏的文档后,单击"工具/选项"菜单,选择&q ...

  4. 导出数据库表结构word文档

    前言 导出数据库表结构到word文档. 效果展示 表 CREATE TABLE `user_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT ...

  5. Java 批量导出包含图片的Word文档

    业务需求:客户需要在资产管理系统中批量导出包含资产二维码等信息的Word文档,如下图 导出Word文档效果如下图 需求就摆在面前,接下来就是技术选型问题了.由于一开始做编程是从OC入门的,但是由于OC ...

  6. Java如何制作带表格的word文档

    设置和添加表格有关操作 写在最前 首先您需要导入WordGo的jar包或者写上maven仓库的坐标,最新版直接去git下载就好:https://github.com/qrpcode/wordgo 表格 ...

  7. php linux下保存文件路径怎么写,linux下php导入带图片的word文档转为html,图片保存下来生成路径。...

    linux下yum install libreoffice yum install libreoffice-headless 如果出现异常,在页面上不一定表现出来,而是页面卡着一直没响应,通过apac ...

  8. python爬取某人所有微博_Python爬取博客的所有文章并存为带目录的word文档(实例67)

    看上博客上一个作者的文章,想一次性下载到一个word文件中,并且可以设置好目录,通过word的"导航窗格"快速定位单篇文章.一劳永逸,从此再也不用去博客上一篇一篇地翻阅了.整理一下 ...

  9. poi java 导出word_java poi 生成word文档并下载

    我使用的是Springboot框架开发的.首先需要在pom.xml文件中引入以下maven包: org.apache.poi poi 3.10-FINAL org.apache.poi poi-oox ...

最新文章

  1. 缩小规模,OpenAI文本生成图像新模型GLIDE用35亿参数媲美DALL-E
  2. Java 枚举(enum)详解
  3. lombok快速入门:实体类中再也不用写setter和getter,toString等方法了
  4. dwz(jui)刷新当前dialog的方法
  5. Umi 4 RC 发布
  6. JAVA spring 常用包作用详解(转)
  7. 玩大数据期间碰到的一些问题总结
  8. 计算机维护系统Win8PE,win8如何进入PE重装电脑系统
  9. 【nand2tetris实验0】windows找不到文件javaw的解决办法
  10. 智能硬件无线通信协议(二)
  11. hmcl启动器java下载_HMCL启动器
  12. WMS仓库管理软件操作流程是怎样
  13. js 字符串 转换 html标签,js 字符串转html标签
  14. 服务器所在文件夹路径,服务器上文件夹路径
  15. linux系统mysql报err1055_MySQL Err 1055的解决
  16. 常见的HTPP状态码
  17. Mac下的maven配置
  18. 【阅读笔记】低照度图像增强-《Fast efficient algorithm for enhancement of low lighting video》
  19. 工业相机之常见参数|视觉硬件篇
  20. 接吻时最不想遇见的10种情况

热门文章

  1. 朋少教你合理进行内部链接优化布局
  2. 06 体脂率案例优化
  3. MP3Play项目实战 (1)
  4. 163邮箱注册哪个好?电子邮箱怎么申请?
  5. html snippets怎么配置,Import HTML snippets in HAML?
  6. 了解数据的发展历程--大数据简史
  7. 线性代数matlab求一个正交矩阵,线性代数求一个正交矩阵P,是P^-1AP= – 手机爱问...
  8. 《The Wiley Handbook of Human Computer Interaction》翻译(冰山一角)
  9. mc服务器常用指令_mc服务器新手指令
  10. 第三人称和第一人称互相切换【Low版】