要用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;
}
分享到:
相关推荐
总结起来,使用iText生成Word文件是一项实用的技能,尤其在需要程序自动化生成报告或文档的场合。通过理解和熟练运用iText,你可以轻松地将数据转换为专业格式的文档,提高工作效率。对于那些需要处理大量文本和格式...
使用iText RFT时,开发者可以调用`com.lowagie.text.rtf`包下的类,如`RtfWriter2`用于创建RTF文件,`RtfDocument`用于打开和修改现有RTF文档,`RtfParagraph`和`RtfTable`则可以帮助构造文档的段落和表格等元素。...
总结,iText 2.1.7和iText-RTF是Java开发中处理PDF和RTF文档的利器,它们为开发者提供了丰富的功能,使得在处理文档格式转换和内容操作时更加便捷高效。无论是在企业应用还是个人项目中,合理运用这两个库都能显著...
总的来说,iText是一个强大且灵活的Java库,对于需要处理PDF和RTF文档的开发人员来说,它是一个不可或缺的工具。通过熟练运用iText,开发者可以大大提高文档生成的效率和质量,使得Java应用程序在文档处理方面展现出...
`itext-2.1.7.jar`是iText的基本库,主要用于生成PDF文件,而`itext-rtf-2.1.7.jar`是其RTF扩展,使我们能够创建和编辑RTF格式的文件,包括Word文档。 1. **创建RTFWriter对象** 要开始生成Word文档,首先需要创建...
iText-RTF使得开发者能够轻松地将RTF文档转换成更稳定的PDF格式,以供长期存储或打印。 在给定的压缩包文件中,我们看到了"itext+itext-rtf"的文件,这意味着它可能包含了iText的基本库和iText-RTF的组件。通常,...
iText 是一个流行的Java库,专门用于处理PDF文档。它提供了创建、编辑、读取PDF文件的功能,并且具有高度灵活性和可扩展性。在提供的文件列表中,我们看到几个与iText相关的JAR文件,分别是: 1. itext-rtf-2.1.7....
通过这个库,开发者可以将iText生成的PDF内容转换为RTF,以便于在其他应用程序中进一步编辑或处理。 这些组件结合在一起,提供了一个强大的工具集,可以方便地处理PDF和RTF文档,尤其是在处理亚洲语言方面。在实际...
iText-rtf库允许开发者将RTF文档转换为PDF,或者从PDF导出为RTF,这样用户就能在不支持PDF的应用程序中查看或编辑内容。这个模块在需要跨平台兼容性的项目中尤其有用。 接下来,iTextAsian是iText的一个特殊版本,...
4. **Itext生成页眉页脚代码.txt**:这个文本文件包含了使用iText来添加页眉和页脚的具体Java代码。通常,页眉和页脚在文档中起到标识、标题和页码的作用。这个代码示例将指导开发者如何在创建的Word文档每一页上...
通过iText-2.1.3,iTextAsian和iText-rtf-2.1.3,开发者可以轻松地在各种项目中实现文本处理和文档生成的需求,无论这些项目是否涉及到亚洲语言的处理。由于这是一个早期版本,用户需要注意可能存在的安全性和兼容性...
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,下载iText.jar文件后,...
通过这个库,你可以将RTF文档转换为更稳定的PDF格式,或者反之,将PDF文档转换为RTF,以便于编辑和共享。 至于提到的`AuditAction.java`文件,这可能是一个包含具体实现代码的Java类,用于利用iText库进行PDF或...
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
在这部分中,我们将学习如何使用iText生成RTF、HTML、XML等格式的文档。 第三部分 iText的高级应用 在iText的高级应用部分,我们将学习如何使用iText库实现一些高级的文档处理功能,如文档合并、文档分割、表格...
在标题提到的场景中,“iText生成word需要的jar包”是指使用iText库来实现这个功能时所需的Java类库文件,也就是JAR文件。 首先,我们来看一下压缩包中的三个文件: 1. `iTextAsian.jar`:这是一个扩展包,专门...
Itext是一款广泛使用的Java库,...总的来说,Itext是一个强大的Java库,提供了丰富的功能来处理PDF和RTF文档。通过合理利用这些依赖,开发者可以在Java应用程序中轻松生成Word文档,尤其是在需要处理亚洲语言的场景下。
在IT行业中,生成文档是常见的任务之一,尤其是在服务器端编程如Java中。本文将深入探讨如何使用Itext 2.1.7库在Java环境中创建Word文档,以及所需的依赖和步骤。 Itext是一个流行的开源Java库,允许开发人员创建、...
Text中文教程.pdf .........可生成pdf文件和rtf文件。h5转pdf 在示例代码0104中你可以看到该文档有一个0.5英寸的左边距和1英寸的右 边距,上边距为1.5英寸,下边距为2.5英寸 说明
5. **itext-rtf-2.1.7.jar**:这是IText的RTF(Rich Text Format)模块,用于处理和生成RTF格式。RTF是一种常见的文本格式,可以被多种文字处理软件读取,包括Microsoft Word。通过这个模块,IText能够将内容导出为...