poi xml模板 操作pdf_Java 借助poi操作PDF工具类

该博客介绍了如何在Java中借助POI库来操作PDF文档,包括创建PDF、设置字体、调整段落对齐方式、首行缩进以及换行等方法的实现。提供了一个名为PDFUtil的工具类,用于方便地生成和编辑PDF文件。
摘要由CSDN通过智能技术生成

package com.herbert.test;

import com.lowagie.text.*;

import com.lowagie.text.Font;

import com.lowagie.text.pdf.BaseFont;

import com.lowagie.text.pdf.PdfWriter;

import java.awt.*;

import java.io.FileOutputStream;

import java.io.IOException;/**

* Created by Herbert on 2019/1/21.*/

public classPDFUtil {/**

* document对象*/

private static Document document = null;/**

* 创建一个书写器,布局文本位置

* @param leftSize 居左

* @param rightSize 居右

* @param onSize 居上

* @param underSize 居下

* @param path 存储位置

* @throws Exception 初始化PDF错误*/

publicPDFUtil(Integer leftSize , Integer rightSize , Integer onSize , Integer underSize, String path) throws Exception {try{//新建document对象 第一个参数是页面大小。接下来的参数分别是左、右、上和下页边距。

document = newDocument(PageSize.A4, leftSize, rightSize, onSize, underSize);//建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。

PdfWriter writer = PdfWriter.getInstance(document, newFileOutputStream(path));//打开文件

document.open();

}catch(Exception e){

e.printStackTrace();

System.out.println("PDF初始化错误");

}

}/**

* 书写每一个段落选择的字体

*

* @param fontType

* 0 //楷体字

* 1 //仿宋体

* 2 //黑体

* 字体需要可在追加

* @return

* @throws IOException

* @throws DocumentException*/

publicBaseFont addFontType(Integer fontType) {

BaseFont baseFont= null;try{switch(fontType){case 0://楷体字

baseFont = BaseFont.createFont("c://windows//fonts//simkai.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);break;case 1://仿宋体

baseFont = BaseFont.createFont("c://windows//fonts//SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);break;case 2://黑体

baseFont = BaseFont.createFont("c://windows//fonts//SIMHEI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);break;

}returnbaseFont;

}catch(Exception e){

System.out.println("选择字体异常");

e.printStackTrace();

}returnbaseFont;

}/**

* 添加段落 - 段落位置( 0 居左 1 居中 2 居右)

* @param fontType 选择字体

* 0 //楷体字

* 1 //仿宋体

* 2 //黑体

* @param fontSize 字体大小

* @param color 字体颜色

* @param alignment 0 居左 1 居中 2 居右

* @param text 文本内容*/

public voidaddParagraph(Integer fontType , Integer fontSize,Color color ,Integer alignment ,String text){try{

BaseFont chinese=addFontType(fontType);

Font font= newFont(chinese, fontSize, Font.COURIER,color);

Paragraph paragraph=newParagraph(text,font);//居中显示

paragraph.setAlignment(alignment);

document.add(paragraph);

}catch(Exception e){

e.printStackTrace();

System.out.println("添加段落异常");

}

}/**

* 添加段落 - 首行缩进

* @param fontType 选择字体

* 0 //楷体字

* 1 //仿宋体

* 2 //黑体

* @param fontSize 字体大小

* @param color 字体颜色

* @param index 首行缩进

* @param text 文本内容*/

public voidaddTextIndent(Integer fontType , Integer fontSize,Color color ,Integer index ,String text){try{

BaseFont chinese=addFontType(fontType);

Font font= newFont(chinese, fontSize, Font.COURIER,color);

Paragraph paragraph=newParagraph(text,font);//设置首行缩进

paragraph.setFirstLineIndent(index);

document.add(paragraph);

}catch(Exception e){

e.printStackTrace();

System.out.println("添加段落异常");

}

}/**

* 添加新的一页*/

public voidaddPage(){try{

document.newPage();

}catch(Exception e){

e.printStackTrace();

System.out.println("添加段落异常");

}

}/**

* 换行

* 传入1是一行,以此递增

* @param lineNum 换的行数*/

public voidnewLine(Integer lineNum) {try{for(int i =0 ; i

document.add(new Paragraph("\n"));

}

}catch(Exception e){

e.printStackTrace();

System.out.println("换行错误");

}

}/**

* 关闭文档*/

public voidclose (){//关闭文档

document.close();

}public static voidmain(String args[]) throws Exception {

PDFUtil pdfUtil= new PDFUtil(80, 80, 120, 120,"E:\\herbert\\test.pdf");

pdfUtil.addParagraph(1,24,new Color(179, 91, 68),0,"我是0个测试案例--居左");

pdfUtil.newLine(10);

pdfUtil.addParagraph(1,24,new Color(75, 108, 179),1,"我是1个测试案例--居中 空行");

pdfUtil.addParagraph(1,24,new Color(140, 109, 179),2,"我是2个测试案例--居右");

pdfUtil.addPage();

pdfUtil.addParagraph(1,24,new Color(73, 179, 130),1,"我是3个测试案例--新增页");

pdfUtil.addParagraph(1,24,new Color(179, 91, 68),0,"我是0个测试案例--居左");

pdfUtil.addTextIndent(1,24,new Color(41, 124, 179),28,"我是3个测试案例--首行缩进");

pdfUtil.close();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值