Java利用itext实现导出PDF文件

所需要的jar包:com.lowagie.text_2.1.7.v201004222200.jar

jar包下载地址:http://cn.jarfire.org/com.lowagie.html

一、主要步骤

1.新建document对象

第一个参数是页面大小。接下来的参数分别是左、右、上和下页边距。

Document document =new Document(PageSize.A4,50,50,30,20);

2.建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以

将文档写入到磁盘中。

创建 PdfWriter 对象 第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。

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

3.打开文档

写入数据之前要打开文档

document.open();

4.向文档中添加内容

document.add();

5.关闭文档

document.close();

二、字体

新建一个字体,iText的方法

BaseFont bfChinese;

bfChinese=BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);//jar包  bfChinese=BaseFont.createFont("C:/Windows/Fonts/msyh.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED); //系统字体

STSongStd-Light 是字体,在jar 中以property为后缀

UniGB-UCS2-H   是编码,在jar 中以cmap为后缀

H 代表文字版式是横版,相应的 V 代表竖版

字体设置

参数一:新建好的字体;参数二:字体大小,参数三:字体样式,多个样式用“|”分隔

Font topfont =new Font(bfChinese,14,Font.BOLD);

Font textfont =new Font(bfChinese,10,,Font.BOLD|Font.UNDERLINE);

三、添加文本的对象:块、短句和段落

Chunk:块(Chunk)是能被添加到文档的文本的最小单位。

Phrase:短句(Phrase)是一系列以特定间距(两行之间的距离)作为参数的块。

Paragraph :段落是一系列块和(或)短句。同短句一样,段落有确定的间距。用户还可以指定缩排;在边和(或)右边保留一定空白,段落可以左对齐、右对齐和居中对齐。添加到文档中的每一个段落将自动另起一行。

四、步骤2书写器创建之后,步骤3文档打开之前

以下项只可在文档关闭状态执行 ,包括水印、页眉、页脚

水印

Watermark内部类,需要继承PdfPageEventHelper类

writer.setPageEvent(new PdfWidget().new Watermark());

页眉

Phrase phrase=new Phrase(new Chunk("pdf页眉   ",topfont));

phrase.add(new Chunk("页眉",textfont));

HeaderFooter header =new HeaderFooter(phrase,false);//false不显示页码。

header.setBorder(Rectangle.BOTTOM);//设置是否有边框,边框在下

document.setHeader(header);//写进文档

页脚

HeaderFooter footer =new HeaderFooter(new Phrase("--"),new Phrase("--"));

footer.setAlignment(1);

footer.setBorder(Rectangle.NO_BORDER);//Rectangle.NO_BORDER没有边框

document.setFooter(footer);

红色下划线部分,自动默认页码写在两个短句中间

五、设置文档属性 (与文档是否打开没有关联)

document.addTitle("Title@sample");// 标题

document.addAuthor("Author@nicaisheng");// 作者

document.addSubject("Subject@iText sample");// 主题

document.addKeywords("Keywords@iText");// 关键字

document.addCreator("Creator@iText");// 创建者

六、文档内容

段落Paragraph

Paragraph pt=new Paragraph(name,headfont);//设置字体样式pt.setAlignment(1);//设置文字居中 0靠左   1,居中     2,靠右

pt.setIndentationLeft(12);// 左缩进

pt.setIndentationRight(12);// 右缩进

pt.setFirstLineIndent(24);// 首行缩进

pt.setLeading(20f);// 行间距

pt.setSpacingBefore(5f);// 设置上空白

pt.setSpacingAfter(10f);// 设置段落下空白

document.add(pt);

表格table

Table table =new Table(3);//括号参数表示列

int width[] = {10,45,45};//设置每列宽度比例

table.setWidths(width);

table.setWidth(95);//占页面宽度比例

table.setAlignment(Element.ALIGN_CENTER);//居中

table.setAutoFillEmptyCells(true);//自动填满

table.setBorderWidth((float)0.1);//表格边框线条宽度

table.setPadding(1);//边距:单元格的边线与单元格内容的边距

table.setSpacing(0);//间距:单元格与单元格之间的距离

table.addCell(new Paragraph("name"),textfont));//添加单元格内容

table.endHeaders();//每页都会显示表头

单元格内容样式cell

Cell cell=new Cell(new Paragraph("序号",keyfont));

cell.setHorizontalAlignment(Element.ALIGN_CENTER);//水平居中

cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//垂直居中

table.addCell(cell);

表格嵌套

最外层表格

PdfPTable table =new PdfPTable(3);

table.setTotalWidth(300);

table.setLockedWidth(true);

PdfPCell cell;

cell =new PdfPCell(new Phrase("Table 5"));

cell.setColspan(3);

cell.setBorderWidth(0);//设置表格的边框宽度为0

table.addCell(cell);

嵌套表格

PdfPTable celltable =new PdfPTable(2);

cell =new PdfPCell(celltable);

cell.setRowspan(2);

cell.setBorderWidth(1);//设置表格的边框宽度为1

cell.setPadding(10);//设置表格与上一个表格的填充为10

table.addCell(cell);

直线

Paragraph p1 =new Paragraph();

p1.add(new Chunk(new LineSeparator()));

doc.add(p1);

点线

Paragraph p2 =new Paragraph();

p2.add(new Chunk(new DottedLineSeparator()));

超链接

Anchor anchor =new Anchor("this is anchor");

定位

点击后,跳到topline的位置

Anchor gotop =new Anchor("go top");

gotop.setReference("#us");

添加图片

Image image =Image.getInstance(imgPath);

image.setAlignment(Image.ALIGN_CENTER);

image.scalePercent(40);//依照比例缩放

JAVA生成PDF文件

生成PDF文件是主要应用的是ITEXT插件 import java.awt.Color; import java.io.File; import java.io.FileOutputStream; i ...

Java生成PDF文件(转)

java生成pdf表格_java生成pdf文件 --- Table相关推荐

  1. java生成pdf表格_java在pdf中生成表格的方法

    1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...

  2. java生成txt表格_java读取txt文件表格并生成新txt

    展开全部 可以使用java中的I/O流来读取文件并生产新文件,给你个代码例子:import java.io.BufferedReader; import java.io.File; import ja ...

  3. java中html5表格_java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)...

    样式 /*background 背景*/ /*background-color: red; = background-color : red;*/ /*background-image: url(im ...

  4. java下载Excel表格(ajax处理流文件)

    java下载Excel表格(ajax处理流文件) 遇到的问题: ① 导出Excel,处理大量的数据 ② 后端使用Apache POI中的SXSSFWorkbook导出功能,不使用xlsx.core.m ...

  5. java 解析pdf表格_java – 使用PDFBox解析PDF文件(特别是使用表格)

    我需要解析一个包含表格数据的PDF文件.我使用 PDFBox提取文件文本来解析结果(字符串)稍后.问题是文本提取不能像我预期的表格数据那样工作.例如,我有一个文件,其中包含这样的表(7列:前两个总是有 ...

  6. java itext 里表格_Java使用itext5实现PDF表格文档导出

    最近拿到一个需求,需要导出PDF文档,市面上可以实现的方法有很多,经过测试和调研决定使用itext5来实现,话不多说,说干就干. 1.依赖导入 com.itextpdf itextpdf 5.5.13 ...

  7. java pdf 水印_Java 在PDF中添加水印——文本/图片水印

    水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下java示例,将分别使用inserttextwatermark(pdfpagebas ...

  8. java生成小图片_JAVA生成缩略小图片类

    JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...

  9. java 去掉pdf文字_Java 删除PDF中的附件

    在PDF中添加附件,可分两种情况,一种是直接把文档作为附件插入到PDF,一种是注释附件,即将文档通过注释的形式插入到PDF页面中的指定位置,通过点击注释,即可打开注释中的附件文档.同样的,在我们删除P ...

  10. java 设置pdf 编码格式_Java 在PDF中添加条形码

    条形码,是由宽度不等的多个黑条和空白所组成,用以表达一组信息的图形标识符.通过给文档添加条形码,可以直观,快捷地访问和分享一些重要的信息.本文就将通过使用Java程序来演示如何在PDF文档中添加Cod ...

最新文章

  1. Scratch等级考试(一级)模拟题
  2. MySQL root密码重置 报错:mysqladmin: connect to server at 'localhost' failed的解决方案
  3. B Convex Polygon
  4. 微信小程序APP(商超营销类)经验总结
  5. 职场新人面试误区:我的技术好,所以你必须要请我?
  6. dataGrid点击显示数据到textBox
  7. visual studio installer 卸载时不能删除安装目录问题
  8. .NET、.NET框架、ASP.NET和C#的关系(完成)
  9. 算法导论 - 函数的增长。
  10. 人工智能应用于自动驾驶技术中的优势
  11. 微网站|h5弹窗|手机网站 html5 弹窗、弹层、提示框、加载条
  12. leetcode刷题日记-1995. 统计特殊四元组
  13. python linux 打印机,Python抓取打印机硒鼓和组件剩余量的爬虫
  14. 当自动化测试遇到邮箱
  15. 做了6年的Java,java简历包装项目经验
  16. 横摆角速度传感器原理
  17. 苹果官网首页页面设计
  18. Python判断一个正整数是否为素数的算法
  19. uni-app h5打包发版到测试和生产环境具体步骤
  20. 【前端领域高频笔试面试】—— HTML+CSS相关

热门文章

  1. 为什么在使用超级终端配置交换机时显示乱码或无显示?
  2. pmp第六版一到三章笔记
  3. qt TCP 网络编程
  4. DEA博弈交叉效率matlab,基于DEA/AR博弈交叉效率方法的学术期刊评价研究
  5. win10 桌面的的文件都不见了 提示不注销保存都文件都为临时_舒心,享受——win10美化...
  6. 认知无线电网络的简单介绍
  7. java adt教程_用Eclipse安装ADT插件搭建Android环境(图文)
  8. CSS安全字体的写法
  9. 写给非网工的CCNA教程(8)跨LAN的通信
  10. ListView 控件与 ImageList 控件