java生成pdf表格_java生成pdf文件 --- Table
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相关推荐
- java生成pdf表格_java在pdf中生成表格的方法
1.目标 在pdf中生成一个可变表头的表格,并向其中填充数据.通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格. 每天生成一个文件夹存储 ...
- java生成txt表格_java读取txt文件表格并生成新txt
展开全部 可以使用java中的I/O流来读取文件并生产新文件,给你个代码例子:import java.io.BufferedReader; import java.io.File; import ja ...
- java中html5表格_java:HTML(table表格,ul列表)和CSS(导入.css文件,三种定义颜色方式,三种样式选择器,a标签属性顺序,)...
样式 /*background 背景*/ /*background-color: red; = background-color : red;*/ /*background-image: url(im ...
- java下载Excel表格(ajax处理流文件)
java下载Excel表格(ajax处理流文件) 遇到的问题: ① 导出Excel,处理大量的数据 ② 后端使用Apache POI中的SXSSFWorkbook导出功能,不使用xlsx.core.m ...
- java 解析pdf表格_java – 使用PDFBox解析PDF文件(特别是使用表格)
我需要解析一个包含表格数据的PDF文件.我使用 PDFBox提取文件文本来解析结果(字符串)稍后.问题是文本提取不能像我预期的表格数据那样工作.例如,我有一个文件,其中包含这样的表(7列:前两个总是有 ...
- java itext 里表格_Java使用itext5实现PDF表格文档导出
最近拿到一个需求,需要导出PDF文档,市面上可以实现的方法有很多,经过测试和调研决定使用itext5来实现,话不多说,说干就干. 1.依赖导入 com.itextpdf itextpdf 5.5.13 ...
- java pdf 水印_Java 在PDF中添加水印——文本/图片水印
水印是一种十分常用的防伪手段,常用于各种文档.资料等.常见的水印,包括文字类型的水印.图片或logo类型的水印.以下java示例,将分别使用inserttextwatermark(pdfpagebas ...
- java生成小图片_JAVA生成缩略小图片类
JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...
- java 去掉pdf文字_Java 删除PDF中的附件
在PDF中添加附件,可分两种情况,一种是直接把文档作为附件插入到PDF,一种是注释附件,即将文档通过注释的形式插入到PDF页面中的指定位置,通过点击注释,即可打开注释中的附件文档.同样的,在我们删除P ...
- java 设置pdf 编码格式_Java 在PDF中添加条形码
条形码,是由宽度不等的多个黑条和空白所组成,用以表达一组信息的图形标识符.通过给文档添加条形码,可以直观,快捷地访问和分享一些重要的信息.本文就将通过使用Java程序来演示如何在PDF文档中添加Cod ...
最新文章
- Scratch等级考试(一级)模拟题
- MySQL root密码重置 报错:mysqladmin: connect to server at 'localhost' failed的解决方案
- B Convex Polygon
- 微信小程序APP(商超营销类)经验总结
- 职场新人面试误区:我的技术好,所以你必须要请我?
- dataGrid点击显示数据到textBox
- visual studio installer 卸载时不能删除安装目录问题
- .NET、.NET框架、ASP.NET和C#的关系(完成)
- 算法导论 - 函数的增长。
- 人工智能应用于自动驾驶技术中的优势
- 微网站|h5弹窗|手机网站 html5 弹窗、弹层、提示框、加载条
- leetcode刷题日记-1995. 统计特殊四元组
- python linux 打印机,Python抓取打印机硒鼓和组件剩余量的爬虫
- 当自动化测试遇到邮箱
- 做了6年的Java,java简历包装项目经验
- 横摆角速度传感器原理
- 苹果官网首页页面设计
- Python判断一个正整数是否为素数的算法
- uni-app h5打包发版到测试和生产环境具体步骤
- 【前端领域高频笔试面试】—— HTML+CSS相关
热门文章
- 为什么在使用超级终端配置交换机时显示乱码或无显示?
- pmp第六版一到三章笔记
- qt TCP 网络编程
- DEA博弈交叉效率matlab,基于DEA/AR博弈交叉效率方法的学术期刊评价研究
- win10 桌面的的文件都不见了 提示不注销保存都文件都为临时_舒心,享受——win10美化...
- 认知无线电网络的简单介绍
- java adt教程_用Eclipse安装ADT插件搭建Android环境(图文)
- CSS安全字体的写法
- 写给非网工的CCNA教程(8)跨LAN的通信
- ListView 控件与 ImageList 控件