首页>代码>itext报表的小demo>/itext报表的小demo/iTextdemo/src/com/jll/demo/MyFirstPDF.java
package com.jll.demo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfGState;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;
/**
 * 第一个PDF文件只能输入英文
 * @author jiang.lili
 *给文档设置背景颜色,边框,外边距
 */
public class MyFirstPDF {

	public  void create1(){
		//第一步创建文档实例
	Document document = new Document(PageSize.A4);
	try {
		//第二步新建一个输出流的文档
		PdfWriter.getInstance(document, new FileOutputStream("d:/create1.pdf"));
		//打开文档
		document.open();
		//向文档添加Meta信息
		document.addAuthor("jiang.lili Sun");
		document.addCreator("jiang.lili Sun");
		document.addTitle("jiang.lili的技术博客");
		document.addSubject("技术博客");
		document.addCreationDate();
		document.addKeywords("开源技术,企业架构,集群,负载均衡,分布式,J2EE,Java,SSH");
		 // 添加Header信息
		 document.addHeader("blog", "http://www.micmiu.com");
		 document.addHeader("twitter", "@suncto");
		 document.addHeader("weibo", "http://weibo.com/ctosun");
		 document.addHeader("mail", "sjsky007@gmail.com");
		 // 第四步:添加内容
		 document.add(new Paragraph("Hello this is my first iText"));
		 document.add(Chunk.NEWLINE);
		// 添加 中文信息
		 BaseFont bf = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",false);
		 Font f = new Font (bf,12,Font.BOLD,BaseColor.BLUE);
		 document.add(new Paragraph("这是中文,欢迎来到IText",f));
		 
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (DocumentException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}finally{
		 // 第五步:关闭文档
		document.close();
	}
	
}
	public void create2(){
		System.out.println("My first PdfTable");
		//定义一个A4大小的矩形组件
		Rectangle rect = new Rectangle(PageSize.A4);
		//设置背景颜色为浅灰色
		rect.setBackgroundColor(BaseColor.LIGHT_GRAY);
		//设置border类型为box(四周都有)
		rect.setBorder(Rectangle.BOX);
		//设置border颜色为深灰色
		rect.setBorderColor(BaseColor.DARK_GRAY);
		//设置border的宽度为5
		rect.setBorderWidth(5);
		//生成一个Document 对象的实例创建一个文档,将rect作为预设的样式传入后面的10,10,10,10是文档的外边距
		Document document = new Document(rect,10,10,10,10);
		try {
			 //新建一个输出流到文档
			PdfWriter.getInstance(document, new FileOutputStream("d:/create2.pdf"));
			//打开文档
			document.open();
			 //向文档输入内容
			document.add(new Paragraph("Hello,world!!!"));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		finally{
			 //一定要加上,不然文档不会生成.
			  document.close();
		}	
	}
	public void create3(){
	//页面大小
	Rectangle rect = new Rectangle(PageSize.B5.rotate());  
	//页面背景色
	rect.setBackgroundColor(BaseColor.ORANGE);
	Document doc = new Document(rect);
	try {
		PdfWriter writer = PdfWriter.getInstance(doc,  new FileOutputStream("d:/create3.pdf"));
		//pdf版本(默认1.4)
		writer.setPdfVersion(PdfWriter.PDF_VERSION_1_7);
		//文档属性
		doc.addTitle("Title@sample");
		doc.addAuthor("Author@rensanning");
		doc.addSubject("Subject@iText sample");
		doc.addKeywords("Keywords@iText");
		doc.addCreator("Creator@iText");
		//页边的空白
		doc.setMargins(10, 20, 30, 40);
		doc.open();
		doc.add(new Paragraph("jiang.lili"));
	} catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (DocumentException e) {
		e.printStackTrace();
	}finally{
		 //一定要加上,不然文档不会生成.
		  doc.close();
	}

	}
	public void create4(){
		Document document = new Document();
		BaseFont bf =null;
		Font fontChinese=null;
		//使用宋休
		try {
			//创建一个简体中文的基本字体,UniGB-UCS2-H简体中文
			bf = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
			fontChinese= new Font(bf,12,Font.NORMAL);
			 //文字大小,与显示方式
			PdfWriter pdf =	PdfWriter.getInstance(document, new FileOutputStream("d:/create4.pdf"));
			/**
			 * 设置阅读器的参数
			 * PdfWriter.PageModeUseThumbs:显示缩略图
			 * PdfWriter.PageLayoutTwoColumnLeft:双列显示,奇数页在左
			 * PdfWriter.HideMenubar:隐藏阅读程序的菜单
			 */
			pdf.setViewerPreferences(PdfWriter.PageModeUseThumbs|
					PdfWriter.PageLayoutTwoColumnLeft|
					PdfWriter.HideMenubar);
			
			/**
			 * 设置文档的密码和权限
			 * 第一个参数设置userPassword为123
			 * 第二个参数设置ownerPassword为1234
			 * 第三个参数设置user的权限可以复制,可以打印
			 * 第四个参数设置加密类型
			 *
			 */
			/*pdf.setEncryption(new byte[]{'1','2','3'}, new byte[]{'1','2','3','4'},
					PdfWriter.ALLOW_COPY|PdfWriter.ALLOW_PRINTING,PdfWriter.STANDARD_ENCRYPTION_40);
		//设置密码不能运行
			pdf.setEncryption("hello".getBytes(), "world".getBytes(), PdfWriter.ALLOW_SCREENREADERS,PdfWriter.STANDARD_ENCRYPTION_128);
			 */	
			
			document.open();
			//添加page
			document.add(new Paragraph("第一页",fontChinese));
			//显示版本号
			document.add(new Paragraph(Document.getVersion()));
			
			document.newPage();
			document.add(new Paragraph("第二页",fontChinese));
			pdf.setPageEmpty(false);
			
			document.newPage();
			document.add(new Paragraph("第三页",fontChinese));
			document.add(new Paragraph(Document.getProduct()));
			document.newPage();
			document.add(new Paragraph("第四页",fontChinese));
			document.add(new Paragraph(Document.getRelease()));
			
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			document.close();
		}
	}
	/**
	 * 添加水印
	 * 给pdf文件添加水印 
     * @param InPdfFile 要加水印的原pdf文件路径 
     * @param outPdfFile 加了水印后要输出的路径 
     * @param markImagePath 水印图片路径 
     * @param pageSize 原pdf文件的总页数
     * (该方法是我当初将数据导入excel中然后再转换成pdf所以我这里的值是用excel的行数计算出来的,
     * 如果不是我这种可以 直接用reader.getNumberOfPages()获取pdf的总页数)
	 */
	public void create5(String InPdfFile, String outPdfFile, String markImagePath){
		
		PdfStamper stamp = null;
		PdfReader reader = null;
		try {
			 reader = new PdfReader( InPdfFile, "PDF".getBytes());  
			 stamp = new PdfStamper(reader, new FileOutputStream(outPdfFile));
		
			//给所有的页面都添加相同的图片
			for(int i = 1; i <= reader.getNumberOfPages(); i++) {  
			
				//背景图
				Image imgs = Image.getInstance("WebContent/image/8.jpg");
				imgs.setAbsolutePosition(0, 0);
				PdfContentByte under2 = stamp.getUnderContent(i);//只给 第三章加背景图
				under2.addImage(imgs);
            	//文字水印
    			PdfContentByte over = stamp.getOverContent(i);//给第二章显示文字水印
    			over.beginText();
    			//BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,BaseFont.WINANSI,BaseFont.EMBEDDED);
    			 BaseFont bf = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",false);
    			over.setFontAndSize(bf, 18);
    			over.setTextMatrix(30,30);
    			
    			//230:X轴 ,650:Y轴, 0:倾斜角度
    			over.showTextAligned(Element.ALIGN_LEFT, "阳光", 230, 650, 0);
    			over.setColorFill(BaseColor.CYAN);
    			over.endText();	
    			//图片水印
    			Image img = Image.getInstance(markImagePath);
    			img.scaleAbsolute(1440, 900); //图片的大小
    			img.setAbsolutePosition(100, 200);//坐标
    			img.setRotation(-20);//旋转 弧度
    			img.setRotationDegrees(-45);//旋转 角度
    			img.scalePercent(10);//依照比例缩放
    			PdfContentByte under = stamp.getUnderContent(i);
    			under.addImage(img);	
    			PdfGState gs = new PdfGState();
                gs.setFillOpacity(0.1f);// 设置透明度为0.1
                under.setGState(gs);
                under.beginText();
			}
		
		
				File tempfile = new File(outPdfFile);  
				    if(tempfile.exists()) {  
				     tempfile.delete();  
				    }  

		
		} catch (IOException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		} finally{
			try {
				stamp.close();
				reader.close();
			} catch (DocumentException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
public static void main(String[] args) {
	MyFirstPDF pdf = new MyFirstPDF();
	pdf.create1();
	pdf.create2();
	pdf.create3();
	pdf.create4();
	pdf.create5("d:/create4.pdf","d:/create5.pdf","WebContent/image/girl.jpg");
}
}
最近下载更多
crosa_Don  LV18 2022年6月7日
yaosiming  LV8 2020年4月14日
157554513749  LV11 2020年4月11日
zmy001  LV11 2020年4月8日
刘芳雄  LV5 2019年7月10日
zb8858662  LV4 2019年5月13日
皮皮虾一月  LV8 2019年4月25日
哦大幅度  LV16 2018年10月23日
tyyeng  LV18 2018年9月15日
gaoxin222  LV14 2018年9月3日
最近浏览更多
1358849392  LV21 2022年11月23日
akbar2020  LV9 2022年9月4日
是你爸爸啊100  LV5 2022年8月29日
crosa_Don  LV18 2022年6月7日
heifenglei  LV7 2022年4月7日
nickshen111  LV8 2021年12月13日
来恬爸爸晋亚阳  LV3 2021年10月29日
疯狂的巨兔12138  LV4 2021年5月14日
阿玉之父  LV1 2021年4月22日
一字清华  LV8 2021年2月21日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友