java 生成 rtf_java itext生成rtf文档
要用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文档相关推荐
- java扫描接口_一种扫描接口并生成可调用API接口文档的方法与流程
本发明属于JavaWeb开发技术领域,涉及一种API接口文档的生成方法,尤其是一种扫描接口并生成可调用API接口文档的方法. 背景技术: API(Application Programming Int ...
- Java使用POI生成柱状图导出到word文档(柱状图)
本篇文章主要介绍,如何使用Apache POI组件生成柱状图导出到word文档中,具体步骤看下文. 一.实现效果 Java使用POI技术生成柱状图导出到word文档中,最终生成的柱状图如下所示: 二. ...
- java利用Freemarker模板生成docx格式的word文档(全过程)
参考汇总: wordexport: JAVA生成并导出Word文档技术论证 java利用Freemarker模板生成docx格式的word文档(全过程) - 旁光 - 博客园 # 参考资料 - 其他项 ...
- 执法文书打印的实现(二):基于freemaker技术生成可打印的word文档
执法文书打印的实现(二) 基于freemaker技术生成可打印的word文档: 基于FreeMarker生成word.doc文档是一项比较成熟的技术.前承上篇博客(),这个方案只能在windo ...
- springboot结合Freemarker模板生成docx格式的word文档(附代码)
首先参考的是这篇文章: java利用Freemarker模板生成docx格式的word文档(全过程) - 旁光 - 博客园参考:https://my.oschina.net/u/3737136/blo ...
- 让Sandcastle为你的类库生成类似于MSDN的帮助文档
为你的类库生成类似于MSDN的帮助文档 .net开发人员都知道大名鼎鼎的MSDN帮助文章,对VS2008的MSDN帮助文档,微软是这么定义的: "MSDN Library for Visua ...
- 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
Swagger是一个描述RESTful的Web API的规范和框架.如果使用ASP.NET的话,可以用Swashbuckle来自动生成Swagger,具体参考如何使 WebAPI 自动生成漂亮又实用在 ...
- Java和iText导出pdf文档
一:工程截图: 二:项目运行截图: 三:源代码: Book.java package com.iText.bean;public class Book {private int bookId;// 图 ...
- 怎么用计算机做目录,word怎么生成目录,教您Word文档如何自动生成目录
word是我们常用的文字编辑器,学会一些word基本操作,使办公更加方便.我们平时写文章或写论文的时候为了方便,文章生成一个目录在查找的时候就很容易找到,如何生成目录呢?下面,小编给大家介绍Word文 ...
- swagger php 生成api,blog/Swagger生成php restful API接口文档.md at master · lfq618/blog · GitHub...
Swagger生成php restful API接口文档 背景 我们的restful api项目采用yaf框架, 整体结构简单, 我们只需要用swagger扫描 application目录即可. 下面 ...
最新文章
- R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
- 硬核推荐:博主神器OpenWrite,免费的一文多发平台,无需部署,注册即用,安全可靠!...
- boost::hana::sum用法的测试程序
- Collections集合工具类的方法_addAllshuffle
- Jenkins构建.net项目
- 乘坐飞机时,有什么事情是机长和机上工作人员不想让乘客知道的?
- UNITY3d在移动设备上的一些优化实战(一)-概述
- CSS居中对齐的各种方式
- 调整图片大小的方法(变大或变小)
- 适合客厅的挂画 山水画让家活色生香
- ALS算法介绍(协同过滤算法介绍)
- 关于影响力章节的读后感:第二章
- go 学习笔记之解读什么是defer延迟函数
- Spring3开发实战 之 第二章:IoC/DI开发(2)
- 智能管家App kotlin版——开发索引
- 【Python自然语言处理】读书笔记:第七章:从文本提取信息
- DVM和ART的区别详解
- nagios使用nsca实现被动监控
- 学会区分 RNN 的 output 和 state
- 迟到的年终总结,2012-2014
热门文章
- linux qt qpa linuxfb,Qt 5.4带有Tslib的Linux触摸屏输入在Raspberry Pi上无法使用LinuxFB QPA平台插件...
- 使用百度开发者工具 4.0 搭建专属的小程序 IDE
- java---抽奖小程序
- java 过滤 rtf 图片_忽略WPF RichTextBox中RTF文件中图像的定位
- java静态链表_Java数据结构——静态链表实现
- Emmagee--APP性能测试工具的基本使用
- 走进波分 -- 15.Optix OSN1800产品介绍
- 学习如何搭建SpringBoot框架
- 74ls20设计半加器_用74ls138设计全加器
- 捷联惯导系统学习2.3(方向余弦阵微分方程)