Java用iText5生成PDF

document.open();

//中文字体,解决中文不能显示问题

BaseFont bfChinese = BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”, BaseFont.EMBEDDED);

Font cusTitleFont = new Font(bfChinese);

cusTitleFont.setSize(16);

Font cusFont = new Font(bfChinese);

cusFont.setSize(9);

//添加标题开始

Font redFont = new Font(bfChinese);

redFont.setColor(BaseColor.RED);//设置颜色

redFont.setSize(20);//设置字体大小

Paragraph chapterTitle = new Paragraph(“java生成pdf文件”, redFont);//设置内容

chapterTitle.setAlignment(1);

Chapter chapter1 = new Chapter(chapterTitle, 1);

chapter1.setNumberDepth(0);

document.add(chapter1);

//添加标题结束

//关闭文档

document.close();

}

/**

  • @param args

*/

public static void main(String[] args)

{

try

{

String filePath=“d:\test1.pdf”;

new PdfJava().pdfTest(filePath);

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

文件如下:

生成table内容

import java.io.FileOutputStream;

import java.util.List;

import com.itextpdf.text.BaseColor;

import com.itextpdf.text.Chapter;

import com.itextpdf.text.Document;

import com.itextpdf.text.Element;

import com.itextpdf.text.Font;

import com.itextpdf.text.PageSize;

import com.itextpdf.text.Paragraph;

import com.itextpdf.text.pdf.BaseFont;

import com.itextpdf.text.pdf.PdfPCell;

import com.itextpdf.text.pdf.PdfPRow;

import com.itextpdf.text.pdf.PdfPTable;

import com.itextpdf.text.pdf.PdfWriter;

public class PdfJava

{

public void pdfTest(String filePath) throws Exception

{

Document document = new Document(PageSize.A4, 36, 36, 36, 36);

PdfWriter.getInstance(document, new FileOutputStream(filePath));

document.open();

//中文字体,解决中文不能显示问题

BaseFont bfChinese = BaseFont.createFont(“STSong-Light”, “UniGB-UCS2-H”, BaseFont.EMBEDDED);

Font cusTitleFont = new Font(bfChinese);

cusTitleFont.setSize(16);

Font cusFont = new Font(bfChinese);

cusFont.setSize(9);

//添加标题开始

Font redFont = new Font(bfChinese);

redFont.setColor(BaseColor.RED);//设置颜色

redFont.setSize(20);//设置字体大小

Paragraph chapterTitle = new Paragraph(“java生成pdf文件”, redFont);//设置内容

chapterTitle.setAlignment(1);

Chapter chapter1 = new Chapter(chapterTitle, 1);

chapter1.setNumberDepth(0);

document.add(chapter1);

//添加标题结束

//添加一个内容段落

document.add(new Paragraph(“表格信息”, cusTitleFont));

// 表格.

PdfPTable table = new PdfPTable(6);

table.setWidthPercentage(100); // 宽度100%填充

table.setSpacingBefore(10f); // 前间距

table.setSpacingAfter(10f); // 后间距

List listRow = table.getRows();

//设置列宽

float[] columnWidths = { 2f, 2f, 2f ,2f, 2f, 2f};

table.setWidths(columnWidths);

//行

PdfPCell cells1[] = new PdfPCell[6];

PdfPRow row1 = new PdfPRow(cells1);

//单元格

cells1[0] = new PdfPCell(new Paragraph(“第一行第1列:”, cusFont));//单元格内容

cells1[0].setHorizontalAlignment(Element.ALIGN_RIGHT);//水平居右

cells1[1] = new PdfPCell(new Paragraph(“第一行第1列值”, cusFont));

cells1[1].setHorizontalAlignment(Element.ALIGN_LEFT);//水平居左

cells1[2] = new PdfPCell(new Paragraph(“第一行第2列:”, cusFont));//单元格内容

cells1[2].setHorizontalAlignment(Element.ALIGN_RIGHT);//水平居右

cells1[3] = new PdfPCell(new Paragraph(“第一行第2列值”, cusFont));

cells1[3].setHorizontalAlignment(Element.ALIGN_LEFT);//水平居左

cells1[4] = new PdfPCell(new Paragraph(“第一行第3列:”, cusFont));//单元格内容

cells1[4].setHorizontalAlignment(Element.ALIGN_RIGHT);//水平居右

cells1[5] = new PdfPCell(new Paragraph(“第一行第3列值”, cusFont));

cells1[5].setHorizontalAlignment(Element.ALIGN_LEFT);//水平居左

//把第一行添加到集合

listRow.add(row1);

//行

PdfPCell cells2[] = new PdfPCell[6];

PdfPRow row2 = new PdfPRow(cells2);

//单元格

cells2[0] = new PdfPCell(new Paragraph(“第二行第1列:”, cusFont));//单元格内容

cells2[0].setHorizontalAlignment(Element.ALIGN_RIGHT);//水平居右

cells2[1] = new PdfPCell(new Paragraph(“第二行第1列值”, cusFont));

cells2[1].setHorizontalAlignment(Element.ALIGN_LEFT);//水平居左

cells2[2] = new PdfPCell(new Paragraph(“第二行第2列:”, cusFont));//单元格内容

cells2[2].setHorizontalAlignment(Element.ALIGN_RIGHT);//水平居右

cells2[3] = new PdfPCell(new Paragraph(“第二行第2列值”, cusFont));

cells2[3].setHorizontalAlignment(Element.ALIGN_LEFT);//水平居左

cells2[4] = new PdfPCell(new Paragraph(“第二行第3列:”, cusFont));//单元格内容

cells2[4].setHorizontalAlignment(Element.ALIGN_RIGHT);//水平居右

cells2[5] = new PdfPCell(new Paragraph(“第二行第3列值”, cusFont));

cells2[5].setHorizontalAlignment(Element.ALIGN_LEFT);//水平居左

//把第二行添加到集合

listRow.add(row2);

//把表格添加到文件中

document.add(table);

//关闭文档

document.close();

}

/**

  • @param args

*/

public static void main(String[] args)

{

try

{

String filePath=“d:\test1.pdf”;

new PdfJava().pdfTest(filePath);

}

catch (Exception e)

{

e.printStackTrace();

}

}

}

文件如下:

加入公章(图片)

Image image1 = Image.getInstance(“d:\gongzhang.jpg”);

//设置图片位置的x轴和y轴

image1.setAbsolutePosition(100, 500);//注意是从文档的坐下角往右、往上计算的

//设置图片的宽度和高度

image1.scaleAbsolute(100, 100);

//将图片1添加到pdf文件中

document.add(image1);

加入作者信息

//Anchor对象: internal and external links

Paragraph country = new Paragraph();

Anchor dest = new Anchor(“china”, new Font(Font.FontFamily.HELVETICA, 14, Font.BOLD, BaseColor.BLUE));

dest.setName(“CN”);

dest.setReference(“http://www.china.com”);//external

country.add(dest);

country.add(String.format(“: %d sites”, 10000));

document.add(country);

加入跳转到指定位置(点击跳转)

document.newPage();

总结

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。

很多人担心学了容易忘,这里教你一个方法,那就是重复学习。

打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。

从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。

了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB
转到指定位置(点击跳转)

document.newPage();

总结

上述知识点,囊括了目前互联网企业的主流应用技术以及能让你成为“香饽饽”的高级架构知识,每个笔记里面几乎都带有实战内容。

很多人担心学了容易忘,这里教你一个方法,那就是重复学习。

打个比方,假如你正在学习 spring 注解,突然发现了一个注解@Aspect,不知道干什么用的,你可能会去查看源码或者通过博客学习,花了半小时终于弄懂了,下次又看到@Aspect 了,你有点郁闷了,上次好像在哪哪哪学习,你快速打开网页花了五分钟又学会了。

从半小时和五分钟的对比中可以发现多学一次就离真正掌握知识又近了一步。

[外链图片转存中…(img-PuzZbymL-1724497583903)]

人的本性就是容易遗忘,只有不断加深印象、重复学习才能真正掌握,所以很多书我都是推荐大家多看几遍。哪有那么多天才,他只是比你多看了几遍书。

了解详情https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值