iText制作PDF文件 学习笔记 (二)

iText制作PDF文件

(二)


块、短句和段落:
package com.java.pdf.second;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * 创建日期:2017-9-28下午3:25:36
 * 修改日期:
 * 作者:ttan
 * 描述:块、短句和段落
 */
public class Pdf_setStrings {
	public static void main(String[] args) {
		//块(chunk)是一个有确定字体的字符串,添加到文档中,其他布局变量均要被定义。
		//下面我们创建一个内容为"Hello World"、红色、斜体、COURIER字体、尺寸为20的一个块
		Chunk chunk = new Chunk("Hello World",FontFactory.getFont(
				FontFactory.COURIER,20,Font.ITALIC,new BaseColor(0,0,255)));
		//上标/下标
		//chunk.setTextRise(2222);
		//块的背景
		chunk.setBackground(new BaseColor(0xFF,0xFF,0x00));
		//下划线/删除线
		Chunk chunk1 = new Chunk("This text is undelined",FontFactory.getFont(
				FontFactory.HELVETICA,12,Font.UNDERLINE));
		Chunk chunk2 = new Chunk("This font is of type ITALIC | STRIKETHRU",FontFactory.getFont(
				FontFactory.COURIER,12,Font.ITALIC|Font.STRIKETHRU));
		
		//段落:一系列块和(或)短句,段落有一定的段间距,段落可以左对齐、右对齐和居中对齐,添加段落会另起一行。
		//短句(Phrases)是一系列以特定间距作为参数的块,一个短句有主字体,但短句中的一些块具有不同于主字体的字体,可以有更多选择去创建短句。
		Paragraph p1 = new Paragraph(new Chunk("This is paragraph 1.",
				FontFactory.getFont(FontFactory.HELVETICA,12)));
		Paragraph p2 = new Paragraph(new Phrase("This is paragraph 2.",
				FontFactory.getFont(FontFactory.HELVETICA,12)));
		Paragraph p3 = new Paragraph("This is paragraph 3.",
				FontFactory.getFont(FontFactory.HELVETICA,12));
		
		//p1.add(new Chunk("You can add chunks,"));
		//p1.add(new Phrase("You can add phrases."));
		
		p1.add("You can add strings,");
		p1.add(chunk);//"Hello World"、红色、斜体、COURIER字体、尺寸为20
		p2.add(chunk1);//下划线的块
		p3.add(chunk2);//删除线的块
		
		Document document = new Document();	
		try {
			PdfWriter.getInstance(document, new FileOutputStream("SetStrings.pdf"));
			document.open();
			document.add(p1);
			document.add(p2);
			document.add(p3);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}finally{
			document.close();
		}		
	}
}

字体的延续:
package com.java.pdf.second;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * 创建日期:2017-9-28下午4:04:17
 * 修改日期:
 * 作者:ttan
 * 描述:字体的延续
 */
public class Pdf_font {
	public static void main(String[] args) {
		//字体的延续,有一些规则
		Phrase myPhrase = new Phrase("This is a phrase.",
				FontFactory.getFont(FontFactory.TIMES_ROMAN,30,Font.BOLD));
	
		myPhrase.add(new Phrase("some other font,",
				FontFactory.getFont(FontFactory.HELVETICA,15,Font.ITALIC)));
		/**
		 * 如果直接添加一个phrase字体样式不与上面定义的Phrase的样式一样,
		 * 而是会与定义的myPhrase的字体样式相同。
		 * 
		 * 字体延续了上面所定义的myPhrase的样式
		 */
		myPhrase.add(new Phrase("this is the second phrase."));
		
		myPhrase.add(new Phrase("this is end.",
				FontFactory.getFont(FontFactory.TIMES_ROMAN,20,Font.BOLD)));
		
		Document document = new Document();
		try {
			//为该Document创建一个Writer实例
			PdfWriter.getInstance(document, new FileOutputStream("setFont.pdf"));
			//打开document
			document.open();
			//添加短句
			document.add(myPhrase);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}finally{
			document.close();
		}
	}
}

个人总结:在文本不能放在一行时,文本将被分割成不同的部分,iText会查找分割符,如果未找到,会在一行的末尾将文本截断。分隔符为“ ”空格和“-”连字符,如果单词之间有空格,并且行尾无法放下这个文本,iText将文本置入下一行。新增的短句之前似乎也能识别出分隔符,如果另外一条短句足够长且没有分隔符,iText将该短句置入下一行。

猜你喜欢

转载自blog.csdn.net/qq_37421862/article/details/78125266