博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iText 实现页眉 页脚 页码
阅读量:6080 次
发布时间:2019-06-20

本文共 2923 字,大约阅读时间需要 9 分钟。

  hot3.png

iText下载地址 

代码测试无误可以直接使用

public class PDFBuilder{	private int pageHeight;	private int pageWidth;	private PDFBuilder(){			}	public static PDFBuilder getInstance(){		return new PDFBuilder();	}	public void generatePDF()throws Exception {		Document document = new Document(new Rectangle(pageWidth, pageHeight));		PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("D://test.pdf"));		this.setFooter(writer);		writer.setFullCompression();		writer.setPdfVersion(PdfWriter.VERSION_1_4);		document.open();		// Set pdf version to 1.4		PdfContentByte cb = writer.getDirectContent();		ColumnText ct=new ColumnText(cb);		for(int i=0;i<10;i++){			document.newPage();			//如果不设置 空白页无法单独显示			writer.setPageEmpty(false);		}		document.close();	}		private void setFooter(PdfWriter writer) throws DocumentException, IOException {		HeaderFooter headerFooter = new HeaderFooter(this);		writer.setPageEvent(headerFooter);	}	public int getPageHeight() {		return pageHeight;	}	public void setPageHeight(int pageHeight) {		this.pageHeight = pageHeight;	}	public int getPageWidth() {		return pageWidth;	}	public void setPageWidth(int pageWidth) {		this.pageWidth = pageWidth;	}	public static void main(String[] args) throws Exception {		PDFBuilder builder=new PDFBuilder();		builder.setPageHeight(400);		builder.setPageWidth(600);		builder.generatePDF();	}}
public class HeaderFooter extends PdfPageEventHelper {	private PDFBuilder builder;    private int pageCount;    private String pageNumberPosition;    private Font font=null;	public HeaderFooter(PDFBuilder builder){		this.builder = builder;		font=new Font();    	font.setColor(BaseColor.RED);    	font.setSize(12);			}	@Override    public void onOpenDocument(PdfWriter writer, Document document) {           pageCount = 0;    }	@Override    public void onChapter(PdfWriter writer, Document document, float paragraphPosition, Paragraph title) {    }	@Override    public void onStartPage(PdfWriter writer, Document document) {           	pageCount++;	    }	@Override    public void onEndPage(PdfWriter writer, Document document) {        // add header footer    	//TODO    	    	if(pageCount==1){    		this.pageNumberPosition="left";    	}    	writer.getDefaultColorspace();    	int offsetX = Integer.valueOf(this.builder.getPageWidth()-30);    	int offsetY = Integer.valueOf(30);        if("left".equalsIgnoreCase(this.pageNumberPosition)){            ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_LEFT, new Phrase(Integer.toString(pageCount),font), builder.getPageWidth()-offsetX, offsetY, 0);            pageNumberPosition="right";        }else if("right".equalsIgnoreCase(this.pageNumberPosition)){            ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_RIGHT, new Phrase(Integer.toString(pageCount),font), offsetX, offsetY, 0);            pageNumberPosition="left";        }    }	}

 

转载于:https://my.oschina.net/dzhai/blog/121838

你可能感兴趣的文章
疯狂Spring Cloud连载(27)Apache Kafka框架
查看>>
Hadoop2.4.1伪分布式的搭建
查看>>
https方式使用TortoiseGit设置git@osc密码长期存储
查看>>
由于多个切面pointcut重叠造成的事务的问题。
查看>>
JAVA懒开发:lombok的使用
查看>>
螃蟹学PHP设计模式之策略模式
查看>>
phpMyAdmin自动登录和取消自动登录
查看>>
Python 抓取网页乱码原因分析
查看>>
online lda 的dirichlet_expectation函数
查看>>
SecureCRT中文显示乱码的解决方法
查看>>
idea java.lang.OutOfMemoryError: PermGen space
查看>>
jstl中格式化时间戳
查看>>
Android上如何让应用截获系统按键
查看>>
ADB常用命令使用
查看>>
iOS --UITextField 输入值改变事件和键盘遮挡处理
查看>>
PAT 1017 Queueing at Bank
查看>>
AVI文件格式
查看>>
PLSQL基础语法三-异常
查看>>
Intellij_idea-14官方快捷键中文版
查看>>
shell入门1
查看>>