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

来源:互联网 发布:单色led显示屏软件 编辑:程序博客网 时间:2024/06/05 11:42

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字体、尺寸为20p2.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"));//打开documentdocument.open();//添加短句document.add(myPhrase);} catch (FileNotFoundException e) {e.printStackTrace();} catch (DocumentException e) {e.printStackTrace();}finally{document.close();}}}

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

原创粉丝点击