Java使用itexpdf生成PDF,正常情况下,新建一个段落Paragraph,然后可以给段落添加一个格式BaseFont



Paragraph paragraphBlue = new Paragraph("我是蓝色字体", blueFont);
document.add(paragraphBlue);


效果如下:

itexpdf同一个段落不同文字,如何设置不同的格式_java

但是这样整个段落只能是一个格式,如果我想让前面的字是蓝色,后面的字是红色,中间还插一张图片,这样的方法就无法做到了

后来发现,这时就用到了com.itextpdf.text.Chunk这个类了

效果如下:

itexpdf同一个段落不同文字,如何设置不同的格式_创建文件_02

代码为:



import com.itextpdf.text.*;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.FileOutputStream;
import java.io.IOException;

public class TestDemo {
public static void main(String[] args) throws DocumentException, IOException {
//创建文件
Document document = new Document();
//建立一个书写器
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("E:/test.pdf"));
//打开文件
document.open();

//中文字体,解决中文不能显示问题
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

//蓝色字体
Font blueFont = new Font(bfChinese);
blueFont.setColor(BaseColor.BLUE);
//红色字体
Font redFont = new Font(bfChinese);
redFont.setColor(BaseColor.RED);

//段落文本
Paragraph paragraph = new Paragraph();

Chunk chunkBlue = new Chunk("我是蓝色字体", blueFont);
Chunk chunkRed = new Chunk("我是红色字体", redFont);

paragraph.add(chunkBlue);
paragraph.add(chunkRed);

document.add(paragraph);

//关闭文档
document.close();
//关闭书写器
writer.close();
}

}


 

当然也可以在段落中添加图片

itexpdf同一个段落不同文字,如何设置不同的格式_创建文件_03

 



Image image = Image.getInstance("E:/test.gif");
Chunk chunkImage = new Chunk(image,0,0);
paragraph.add(chunkImage);


 


把每一件简单的事情做好,就是不简单;把每一件平凡的事情做好,就是不平凡!相信自己,创造奇迹~~