起因:
在生成word文档时,一般都要求生成固定的页眉。页眉,即可以是文字也可以图片。对于程序员来说,图片可以简化开发的复杂度,对于用户来说可以丰富页眉的样式。于是我尝试使用itext生成rtf格式来获得包含图片页眉的word文档。
尝试1:
直接使用document.add(Image),可以看到图片在文本内,就算使用Image.setAbsolutePosition(),图片的位置仍然没有变化。
尝试2:
使用new HeaderFooter(Phrase,false)。貌似可以达到预期效果,但是你一看代码,就知道这是以代码的复杂性为代价的,而且会额外的多处两个回车符。
尝试3:
使用
com.lowagie.text.rtf.headerfooter.RtfHeaderFooter。终于达到预期效果了。
package org.study.itext.rtf;
import java.awt.Color;
import java.io.FileOutputStream;
import com.lowagie.text.Document;
import com.lowagie.text.Font;
import com.lowagie.text.HeaderFooter;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.rtf.RtfWriter2;
import com.lowagie.text.rtf.headerfooter.RtfHeaderFooter;
/**
* @blog http://reymont.iteye.com/
* @author reymont.li
* @version create time:2011-7-21 下午04:02:59
*/
public class RtfWithImageHeader {
public static void main(String[] args) {
test1();
test2();
test3();
}
public static void test1(){
Document document1 = new Document(PageSize.A4, 36, 36, 100, 36);
try {
RtfWriter2.getInstance(
document1,
new FileOutputStream("resource/RtfWithImageHeader1.doc"));
Image headerImage = Image.getInstance("resource/reymont.png");
BaseFont bfChinese = BaseFont.createFont("resource/STSONG.TTF",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
document1.open();
document1.add(headerImage);
Font topFont = new Font(bfChinese, 24, Font.NORMAL, Color.RED);
Paragraph para = new Paragraph("这是个将图片作为Word页眉的例子!",topFont);
document1.add(para);
} catch (Exception e) {
e.printStackTrace();
}
document1.close();
}
public static void test2(){
Document document2 = new Document(PageSize.A4, 36, 36, 100, 36);
try {
RtfWriter2 writer = RtfWriter2.getInstance(
document2,
new FileOutputStream("resource/RtfWithImageHeader2.doc"));
BaseFont bfChinese = BaseFont.createFont("resource/STSONG.TTF",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
document2.open();
Font topFont1 = new Font(bfChinese, 10, Font.NORMAL, Color.BLUE);
Paragraph headerPara1 = new Paragraph("@blog http://reymont.iteye.com/", topFont1);
Paragraph headerPara2 = new Paragraph("@author reymont.li", topFont1);
Paragraph headerPara3 = new Paragraph("@MSN reymont.li@hotmail.com", topFont1);
Paragraph headerPara = new Paragraph();
headerPara.add(headerPara1);
headerPara.add(headerPara2);
headerPara.add(headerPara3);
HeaderFooter header = new HeaderFooter(headerPara, false);
writer.setHeader(header);
document2.add(header);
Font topFont2 = new Font(bfChinese, 24, Font.NORMAL, Color.RED);
Paragraph para = new Paragraph("这是个将图片作为Word页眉的例子!",topFont2);
document2.add(para);
} catch (Exception e) {
e.printStackTrace();
}
document2.close();
}
public static void test3(){
Document document3 = new Document(PageSize.A4, 36, 36, 100, 36);
try {
RtfWriter2 writer = RtfWriter2.getInstance(
document3,
new FileOutputStream("resource/RtfWithImageHeader3.doc"));
document3.open();
Image headerImage = Image.getInstance("resource/reymont.png");
RtfHeaderFooter header = new RtfHeaderFooter(headerImage);
writer.setHeader(header);
BaseFont bfChinese = BaseFont.createFont("resource/STSONG.TTF",
BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font topFont = new Font(bfChinese, 24, Font.NORMAL, Color.RED);
Paragraph para = new Paragraph("这是个将图片作为Word页眉的例子!",topFont);
document3.add(para);
} catch (Exception e) {
e.printStackTrace();
}
document3.close();
}
}
相关资源:
- 大小: 17.8 KB
- 大小: 4.1 KB
- 大小: 14.1 KB
分享到:
相关推荐
iText不仅支持生成PDF和rtf格式的文档,还具备将XML和HTML文件转化为PDF的功能,大大扩展了其在各种应用场景中的实用性。 在使用iText时,首先需要引入相应的库文件,如压缩包中的`itextpdf-5.5.1.jar`,这是iText...
- 直接生成 PDF 或 RTF 格式的文档。 - 支持将 XML、HTML 文件转换为 PDF 文件。 2. **文档编辑**: - 添加文本、图像、表格等元素。 - 设置文档的布局和样式。 - 生成复杂的报表和文档。 3. **其他功能**: ...
asp.net生成PDF详解 asp.net生成PDF PDF详解 用C#制作PDF文件全攻略 丽水市汽车运输集团有限公司信息中心 苟安廷 目 录 前 言 3 第一部分 iText的简单应用 4 第一章 创建一个Document 4 第一步 创建一个Document实例...
在其他文档格式的支持方面,文章第二部分介绍了如何将XML和XHTML以及RTF文件转换成PDF格式,并讨论了RTF格式中特有的页眉和页脚的处理方法。 文章的第三部分则深入探讨了iText的高级应用,包括TrueType字体的应用和...
RTF中扩展的页眉和页脚 第三部分 iText的高级应用 第九章 字体 TrueType字体应用 TruType字体集合的应用 第十章 图象和文本的绝对位置 pdfContentByte 简单图形 文本 模板(Form xObjects) 分栏 ...
- **Image对象**:使用`Image`类加载并插入图片。 - **图片的位置**:控制图片在文档中的位置。 - **缩放和旋转图片**:通过`ScalePercent`和`RotateDegrees`方法调整图片大小和方向。 - **原始图片数据**:直接处理...
RTF中扩展的页眉和页脚 26 第三部分 iText的高级应用 27 第九章 字体 27 TrueType字体应用 27 TruType字体集合的应用 28 第十章 图象和文本的绝对位置 28 pdfContentByte 28 简单图形 29 文本 29 模板(Form x...
- **RTF文件**:还可以将RTF格式转换为PDF文档,尽管有一些功能可能不受支持。 #### 六、iText的高级应用 - **字体**:支持TrueType字体的应用和集合,提供丰富的文本样式。 - **图象和文本的绝对位置**:使用`...
- RTF文件:创建和处理RTF格式文档,并将其转换为PDF。 9. iText的高级应用: - 字体支持:使用TrueType字体和字体集合来丰富文档内容。 - 图像和文本的绝对位置:使用pdfContentByte对象精确控制内容在PDF中的...
- **RTF中扩展的页眉和页脚**:可以在RTF文档中定义更复杂的页眉和页脚。 #### 第三部分 iText的高级应用 **九、字体** - **TrueType字体应用**:使用TrueType字体为文档增添更多样式。 - **TruType字体集合的...
- **RTF文件**:将RTF格式的文档转换为PDF,保留原始文档的格式和样式。 #### iText的高级应用 对于更复杂的PDF处理需求,iTextSharp提供了以下高级功能: - **字体**:支持TrueType字体,可以应用于整个文档或...