要用itext来生成rtf文档,首先需下载三个包,分别是:iText-2.1.7.jar、iText-rtf-2.1.7.jar以及iTextAsian.jar,这几个包已上传,可从“itext应用包”下载。

网上有很多这方面的应用讲解,我也下载了一些说明,可以借鉴。

具体应用如下:

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

iText中用文本块(Chunk)、短语(Phrase)和段落(paragraph)处理文本。

文本块(Chunk)是处理文本的最小单位。

短语(Phrase)由一个或多个文本块(Chunk)组成,可以通过短语(Phrase)成员函数add将一个文本块(Chunk)加到短语(Phrase)中,如:phrase6.add(chunk)。

段落(paragraph)由一个或多个文本块(Chunk)或短语(Phrase)组成,相当于WORD文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。

/**

*生成rtf文档,如果成功则反回true,然后保存到数据库,否则将不会向数据库插入

*@param1 单选题

*@param1 多选题

*@realPath文件保存路径

*@f_questionTitle 标题

*@f_today 当前时间

*@fileIndex 文件生成次数

*@return boolean

*/

public boolean createRTFContext(ArrayList list1,ArrayList list2,String realPath,String f_questionTitle,String today,String fileIndex) throws DocumentException, IOException {

try {

//调用createFolder方法创建文件夹

String currentFolder = createFolder(realPath,today);

//String fileIndex = today+"第"+fileCount+"次";

//真正需保存到数据库的文件路径

String strFileName = realPath+currentFolder+"/"+fileIndex+f_questionTitle+".rtf";

Document document = new Document(PageSize.A4);

RtfWriter2.getInstance(document, new FileOutputStream(strFileName));

document.open();

/*if(strFileName==null) strFileName="";

//获得列表需显示的文件名

String fileName = strFileName.substring(strFileName.lastIndexOf("/")+1,strFileName.length()-4);*/

// 设置中文字体

BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

// 标题字体风格

Font titleFont = new Font(bfChinese, 16, Font.BOLD);

// 小标题字体风格

Font subTitleFont = new Font(bfChinese, 14, Font.BOLD);

// 正文字体风格

Font contextFont = new Font(bfChinese, 12, Font.NORMAL);

// 页眉页脚字体风格

Font headerFooterFont = new Font(bfChinese, 10, Font.BOLD);

// footer页角显示页数

Table footer = new Table(1);

footer.setBorder(0);

footer.setWidth(100);

Paragraph pageNumber = new Paragraph("第 ");

pageNumber.add(new RtfPageNumber());

pageNumber.add(new Chunk(" 页"));

pageNumber.setAlignment(Paragraph.ALIGN_RIGHT);

pageNumber.setFont(headerFooterFont);

Cell cell02 = new Cell(pageNumber);

cell02.setBorder(0);

footer.addCell(cell02);

document.setFooter(new RtfHeaderFooter(footer));

// 设置rtf标题

Paragraph title = new Paragraph(fileIndex+f_questionTitle);

title.setAlignment(Element.ALIGN_CENTER);

title.setFont(titleFont);

document.add(title);

Paragraph subSigleTitle = new Paragraph("一、单选题");

subSigleTitle.setFont(subTitleFont);

subSigleTitle.setSpacingBefore(10); // 本段与上一段之间的空行

subSigleTitle.setFirstLineIndent(0); // 本段行首缩进

document.add(subSigleTitle);

// 试题内容

S_test_question s = new S_test_question ();

for (int i = 0; i < list1.size(); i++) { //单选题

s = (S_test_question) list1.get(i);

String contextString = (i+1)+"、"+s.getf_questions();

String rest = contextString.replaceAll("\r"," ");

contextString = rest;

Paragraph context = new Paragraph(contextString);

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

context.setSpacingBefore(10); // 本段与上一段之间的空行

context.setFirstLineIndent(0); // 本段行首缩进

document.add(context);

}

Paragraph subMultiTitle = new Paragraph("二、多选题");

subMultiTitle.setFont(subTitleFont);

subMultiTitle.setSpacingBefore(10); // 本段与上一段之间的空行

subMultiTitle.setFirstLineIndent(0); // 本段行首缩进

document.add(subMultiTitle);

for (int i = 0; i < list2.size(); i++) { //多选题

int index = list1.size()+1;

s = (S_test_question) list2.get(i);

String contextString = (index+i)+"、"+s.getf_questions();

String rest = contextString.replaceAll("\r"," ");

contextString = rest;

Paragraph context = new Paragraph(contextString);

context.setAlignment(Element.ALIGN_LEFT);

context.setFont(contextFont);

context.setSpacingBefore(10); // 本段与上一段之间的空行

context.setFirstLineIndent(0); // 本段行首缩进

document.add(context);

}

document.newPage(); //分页,下一页

//在表格末尾添加答案

//String fileCount = fileName.substring(fileName.length()-3,fileName.length()-1);

Paragraph subAnswerTitle = new Paragraph(fileIndex+"试题答案");

subAnswerTitle.setFont(subTitleFont);

//subAnswerTitle.setSpacingBefore(100); // 本段与上一段之间的空行

subAnswerTitle.setFirstLineIndent(0); // 本段行首缩进

document.add(subAnswerTitle);

for (int i = 0; i < list1.size(); i++) { //单选题答案

s = (S_test_question) list1.get(i);

String answerString =(i+1)+"、"+s.getf_answer()+" ";

//Paragraph anwser = new Paragraph(answerString);

//anwser.setAlignment(Element.ALIGN_LEFT);

//document.add(anwser1);

Chunk chunk = new Chunk();

chunk.append(answerString);

Phrase phAnwser = new Phrase();

phAnwser.add(chunk);

document.add(phAnwser);

}

for (int i = 0; i < list2.size(); i++) { //多选题答案

int index = list1.size()+1;

s = (S_test_question) list2.get(i);

String answerString =(index+i)+"、"+s.getf_answer()+" ";

//Paragraph anwser1 = new Paragraph(answerString);

//anwser1.setAlignment(Element.ALIGN_LEFT);

//document.add(anwser1);

Chunk chunk = new Chunk(answerString);

Phrase phAnwser = new Phrase();

phAnwser.add(chunk);

document.add(phAnwser);

}

document.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

return false;

} catch (BadElementException e) {

e.printStackTrace();

return false;

} catch (DocumentException e) {

e.printStackTrace();

return false;

} catch (IOException e) {

e.printStackTrace();

return false;

}

return true;

}

下载次数: 375

下载次数: 633

分享到:

2010-05-08 22:20

浏览 6263

评论

1 楼

yinhaibo01

2012-11-24

写的简单明了,很快捷的就搭建了iText使用例子,强烈推荐

java 生成 rtf_java itext生成rtf文档相关推荐

  1. java扫描接口_一种扫描接口并生成可调用API接口文档的方法与流程

    本发明属于JavaWeb开发技术领域,涉及一种API接口文档的生成方法,尤其是一种扫描接口并生成可调用API接口文档的方法. 背景技术: API(Application Programming Int ...

  2. Java使用POI生成柱状图导出到word文档(柱状图)

    本篇文章主要介绍,如何使用Apache POI组件生成柱状图导出到word文档中,具体步骤看下文. 一.实现效果 Java使用POI技术生成柱状图导出到word文档中,最终生成的柱状图如下所示: 二. ...

  3. java利用Freemarker模板生成docx格式的word文档(全过程)

    参考汇总: wordexport: JAVA生成并导出Word文档技术论证 java利用Freemarker模板生成docx格式的word文档(全过程) - 旁光 - 博客园 # 参考资料 - 其他项 ...

  4. 执法文书打印的实现(二):基于freemaker技术生成可打印的word文档

    执法文书打印的实现(二)     基于freemaker技术生成可打印的word文档: 基于FreeMarker生成word.doc文档是一项比较成熟的技术.前承上篇博客(),这个方案只能在windo ...

  5. springboot结合Freemarker模板生成docx格式的word文档(附代码)

    首先参考的是这篇文章: java利用Freemarker模板生成docx格式的word文档(全过程) - 旁光 - 博客园参考:https://my.oschina.net/u/3737136/blo ...

  6. 让Sandcastle为你的类库生成类似于MSDN的帮助文档

    为你的类库生成类似于MSDN的帮助文档 .net开发人员都知道大名鼎鼎的MSDN帮助文章,对VS2008的MSDN帮助文档,微软是这么定义的: "MSDN Library for Visua ...

  7. 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档

    Swagger是一个描述RESTful的Web API的规范和框架.如果使用ASP.NET的话,可以用Swashbuckle来自动生成Swagger,具体参考如何使 WebAPI 自动生成漂亮又实用在 ...

  8. Java和iText导出pdf文档

    一:工程截图: 二:项目运行截图: 三:源代码: Book.java package com.iText.bean;public class Book {private int bookId;// 图 ...

  9. 怎么用计算机做目录,word怎么生成目录,教您Word文档如何自动生成目录

    word是我们常用的文字编辑器,学会一些word基本操作,使办公更加方便.我们平时写文章或写论文的时候为了方便,文章生成一个目录在查找的时候就很容易找到,如何生成目录呢?下面,小编给大家介绍Word文 ...

  10. swagger php 生成api,blog/Swagger生成php restful API接口文档.md at master · lfq618/blog · GitHub...

    Swagger生成php restful API接口文档 背景 我们的restful api项目采用yaf框架, 整体结构简单, 我们只需要用swagger扫描 application目录即可. 下面 ...

最新文章

  1. R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
  2. 硬核推荐:博主神器OpenWrite,免费的一文多发平台,无需部署,注册即用,安全可靠!...
  3. boost::hana::sum用法的测试程序
  4. Collections集合工具类的方法_addAllshuffle
  5. Jenkins构建.net项目
  6. 乘坐飞机时,有什么事情是机长和机上工作人员不想让乘客知道的?
  7. UNITY3d在移动设备上的一些优化实战(一)-概述
  8. CSS居中对齐的各种方式
  9. 调整图片大小的方法(变大或变小)
  10. 适合客厅的挂画 山水画让家活色生香
  11. ALS算法介绍(协同过滤算法介绍)
  12. 关于影响力章节的读后感:第二章
  13. go 学习笔记之解读什么是defer延迟函数
  14. Spring3开发实战 之 第二章:IoC/DI开发(2)
  15. 智能管家App kotlin版——开发索引
  16. 【Python自然语言处理】读书笔记:第七章:从文本提取信息
  17. DVM和ART的区别详解
  18. nagios使用nsca实现被动监控
  19. 学会区分 RNN 的 output 和 state
  20. 迟到的年终总结,2012-2014

热门文章

  1. linux qt qpa linuxfb,Qt 5.4带有Tslib的Linux触摸屏输入在Raspberry Pi上无法使用LinuxFB QPA平台插件...
  2. 使用百度开发者工具 4.0 搭建专属的小程序 IDE
  3. java---抽奖小程序
  4. java 过滤 rtf 图片_忽略WPF RichTextBox中RTF文件中图像的定位
  5. java静态链表_Java数据结构——静态链表实现
  6. Emmagee--APP性能测试工具的基本使用
  7. 走进波分 -- 15.Optix OSN1800产品介绍
  8. 学习如何搭建SpringBoot框架
  9. 74ls20设计半加器_用74ls138设计全加器
  10. 捷联惯导系统学习2.3(方向余弦阵微分方程)