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

iText制作PDF文件  

(七)
图像和文本的绝对位置:
之前我们添加文本、图片、段落、列表、表格等,均未涉及到布局问题,有时候我们不需要使用到这种自动的布局方式,有时候我们需要放置到特定的位置当中,这时候我们需要使用到PdfContentByte类。
package com.java.pdf.seventh;

import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * 创建日期:2017-10-12上午9:22:48
 * 修改日期:
 * 作者:ttan
 * 描述:图像和文本的绝对位置
 */
public class Pdf_content {
	public static void main(String[] args) {
		Document document = new Document();
		try {
			//获得PdfWriter对象
			PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("content.pdf"));
			//document.open()的操作应当在PdfContentByte对象操作之前执行
			document.open();
			//获得PdfContentByte对象 --关键
			PdfContentByte pcb = writer.getDirectContent();
			//pcbun的图像将在pbc的图像之下
			PdfContentByte pcbun = writer.getDirectContentUnder();
			pcb.setLineWidth(10f);
			pcb.moveTo(200, 200);
			pcb.lineTo(100, 700);
			pcbun.setLineWidth(20f);
			pcb.moveTo(400, 400);
			pcb.lineTo(100, 700);
			pcb.stroke();//若要改变线宽或者颜色的话,在调用stroke()方法之前,否则无效
			pcbun.stroke();
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			document.close();
		}
	}
}

生成文本:
package com.java.pdf.seventh;

import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * 创建日期:2017-10-12下午1:43:10
 * 修改日期:
 * 作者:ttan
 * 描述:文本
 */
public class Pdf_contentText {
	public static void main(String[] args) {
		Document document = new Document();
		try {
			//获得PdfWriter对象
			PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("contentText.pdf"));
			//document.open()的操作应当在PdfContentByte对象操作之前执行
			document.open();
			//获得PdfContentByte对象 --关键
			PdfContentByte pcb = writer.getDirectContent();
			//开始
			pcb.beginText();
			//创建字体
			BaseFont bf = BaseFont.createFont("E:\\fzktjw.ttf", "Identity-H", true);
			//设置字体和大小
			pcb.setFontAndSize(bf, 24);
			//pcb.showTextAligned(alignment, text, x, y, rotation)
			//输入文字并写入坐标,将文本置于自己所需要放置的位置
			pcb.showTextAligned(PdfContentByte.ALIGN_CENTER, "PDF学习之PdfContentByte的使用。", 300, 500, 0);
			//结束
			pcb.endText();
		}catch(Exception e){
			e.getStackTrace();
		}finally{
			document.close();
		}
	}
}

总结:在很多时候,我们通过JAVA生成PDF有特定的需要,比如生成报表,可能需要放置多种对象,这时候我们需要用到PdfContentByte类去进行编辑。

猜你喜欢

转载自blog.csdn.net/qq_37421862/article/details/78215274
今日推荐