itextpdf添加表格元素_java使用iText生成pdf表格详解

首先需要你自己下载itext相关的jar包并添加引用,或者在maven中添加如下引用配置:

com.lowagie

iText

2.1.5

com.lowagie

iText-rtf

2.1.4

com.lowagie

iTextAsian

2.1.4

如下代码:

package com.iText.create;

import java.awt.Color;

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import com.lowagie.text.Cell;

import com.lowagie.text.Document;

import com.lowagie.text.DocumentException;

import com.lowagie.text.Element;

import com.lowagie.text.Font;

import com.lowagie.text.HeaderFooter;

import com.lowagie.text.Image;

import com.lowagie.text.PageSize;

import com.lowagie.text.Paragraph;

import com.lowagie.text.Phrase;

import com.lowagie.text.Table;

import com.lowagie.text.pdf.BaseFont;

import com.lowagie.text.pdf.PdfWriter;

/** *//**

* 功能描述:使用Itext组件创建pdf文档

* 创建时间:2010-07-01

* @author sxyx2008

*

*/

public class CreatePdf {

public CreatePdf() throws Exception{

//创建一个文档对象纸张大小为A4

Document doc=new Document(PageSize.A4,50,50,50,50);

//设置要输出到磁盘上的文件名称

PdfWriter writer=PdfWriter.getInstance(doc,new FileOutputStream(new File("徐熙媛.pdf")));

//设置作者信息

doc.addAuthor("sxyx2008");

//设置文档创建日期

doc.addCreationDate();

//设置标题

doc.addTitle("iText测试");

//设置值主题

doc.addSubject("iText");

//构建页脚

HeaderFooter footer=new HeaderFooter(new Phrase(), true);

//设置页脚是否有边框

//0表示无

//1上边框

//2下边框

//3上下边框都有 默认都有

//设置页脚是否有边框

footer.setBorder(0);

//footer.setBorder(1);

//footer.setBorder(2);

//footer.setBorder(3);

//设置页脚的对齐方式

footer.setAlignment(Element.ALIGN_CENTER);

//将页脚添加到文档中

doc.setFooter(footer);

//打开文档开始写内容

doc.open();

//Paragraph par1=new Paragraph("Hello,Welcome You");

//Paragraph par2=new Paragraph("你好,中文测试",ChineseFont());

/**//*par1.setAlignment(Element.ALIGN_CENTER);

doc.add(par1);*/

//par2.setAlignment(Element.ALIGN_CENTER);

//doc.add(par2);

//构建一段落

Paragraph par3=new Paragraph("客户信息表",ChineseFont());

//设置局中对齐

par3.setAlignment(Element.ALIGN_CENTER);

//添加到文档

doc.add(par3);

//创建一个四列的表格

Table table=new Table(4);

//设置边框

table.setBorder(1);

//创建表头

Cell cell1=new Cell(new Phrase("编号",ChineseFont()));

cell1.setHorizontalAlignment(Element.ALIGN_CENTER);

cell1.setVerticalAlignment(Element.ALIGN_CENTER);

cell1.setHeader(true);

cell1.setBackgroundColor(Color.RED);

Cell cell2=new Cell(new Phrase("姓名",ChineseFont()));

cell2.setHorizontalAlignment(Element.ALIGN_CENTER);

cell2.setVerticalAlignment(Element.ALIGN_CENTER);

cell2.setHeader(true);

cell2.setBackgroundColor(Color.RED);

Cell cell3=new Cell(new Phrase("性别",ChineseFont()));

cell3.setHorizontalAlignment(Element.ALIGN_CENTER);

cell3.setVerticalAlignment(Element.ALIGN_CENTER);

cell3.setHeader(true);

cell3.setBackgroundColor(Color.RED);

Cell cell4=new Cell(new Phrase("备注",ChineseFont()));

cell4.setHorizontalAlignment(Element.ALIGN_CENTER);

cell4.setVerticalAlignment(Element.ALIGN_CENTER);

cell4.setHeader(true);

cell4.setBackgroundColor(Color.RED);

table.addCell(cell1);

table.addCell(cell2);

table.addCell(cell3);

table.addCell(cell4);

//添加此代码后每页都会显示表头

table.endHeaders();

//循环向表格中添加100条记录 100行4列的表格

//以下代码的作用是创建100行数据,其中每行有四列,列依次为 编号 姓名 性别 备注

for (int i = 1; i <=100; i++) {

//设置编号单元格

Cell cell11=new Cell(i+"");

//设置姓名单元格

Cell cell22=new Cell(new Phrase("徐熙媛",ChineseFont()));

//设置性别单元格

Cell cell33=new Cell(new Phrase("女",ChineseFont()));

//设置备注单元格

Cell cell44=new Cell(new Phrase("好姑娘",ChineseFont()));

//单元格水平对齐方式

cell11.setHorizontalAlignment(Element.ALIGN_CENTER);

//单元格垂直对齐方式

cell11.setVerticalAlignment(Element.ALIGN_CENTER);

cell22.setHorizontalAlignment(Element.ALIGN_CENTER);

cell22.setVerticalAlignment(Element.ALIGN_CENTER);

cell33.setHorizontalAlignment(Element.ALIGN_CENTER);

cell33.setVerticalAlignment(Element.ALIGN_CENTER);

cell44.setHorizontalAlignment(Element.ALIGN_CENTER);

cell44.setVerticalAlignment(Element.ALIGN_CENTER);

table.addCell(cell11);

table.addCell(cell22);

table.addCell(cell33);

table.addCell(cell44);

}

//将表格添加到新的文档

doc.add(table);

//创建新的一页

doc.newPage();

//添加图片

Image image=Image.getInstance("D://Program Files//myeclipseworkspace//6.5//iText//src//5.jpg");

//添加到文档

doc.add(image);

//设置对象方式

image.setAlignment(Element.ALIGN_CENTER);

doc.close();

writer.close();

}

//pdf文档中文字符处理

public static Font ChineseFont()

{

BaseFont baseFont=null;

try {

baseFont=BaseFont.createFont("STSong-Light","UniGB-UCS2-H", true);

} catch (DocumentException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

Font chineseFont=new Font(baseFont,8,Font.NORMAL,Color.BLUE);

return chineseFont;

}

public static void main(String[] args) {

try {

new CreatePdf();

} catch (Exception e) {

e.printStackTrace();

}

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571987.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python map() 函数

功能&#xff1a;根据提供的函数对指定序列做映射 第一个参数 function 以参数序列中的每一个元素调用 function 函数&#xff0c;返回包含每次 function 函数返回值的新列表。 语法&#xff1a;map(function, iterable, ...) 参数&#xff1a;function:函数 iterable:一个或多…

vue的视图化创建项目_vue-cli3用图形化的方式创建项目

Vue脚手架可以快速生成Vue项目基础的架构。A.安装3.x版本的Vue脚手架&#xff1a;npm install -g vue/cliB.基于3.x版本的脚手架创建Vue项目&#xff1a;1).使用命令创建Vue项目命令&#xff1a;vue create my-project选择Manually select features(选择特性以创建项目)勾选特性…

Jmeter连接Mysql

1、将mysql-connector-java-5.1.7-bin.jar放入Jmeter安装目录的bin文件夹中 2、在顶层目录<测试计划>中加载驱动 3、添加JDBC Connection Configuration 4、配置数据库信息 1&#xff09;Variable Name不能为空 2&#xff09;DataBase URL 格式为&#xff1a;jdbc:mysql:…

胃net的放大内镜_李锐:内镜下的早癌诊断

写在前面&#xff1a;这是一篇很专业的文章&#xff0c;因为很多术语对于大多数朋友来说看的不是很明白。简单讲&#xff0c;这是让消化内镜医生看的&#xff0c;说的是怎么样才能发现更多的早癌。这里需要说明一下&#xff0c;很容易造成误解&#xff1a;早癌就在那里&#xf…

单线程多线程_面试系列 redis为什么快amp;单线程amp;多线程

redis为什么这么快C语言实现&#xff0c;执行速度快纯内存操作&#xff0c;数据读写在内存中&#xff0c;异步持久化到磁盘丰富和高效的数据结构基于非阻塞的I/O多路复用机制单线程避免了上下文切换Redis单线程redis单线程的核心就是它基于一个假设&#xff1a;它在内存中执行的…

官方太空射击游戏总结

很大一部分问题是碰撞体&#xff0c;刚体&#xff0c;还有碰撞器里面Is Trigger的勾选问题。这些问题在上一篇里面解释的很清楚了。实现石头自动旋转功能&#xff1a;GetComponent<Rigidbody>().angularVelocity Random.insideUnitSphere * tumble;实现石头一波一波下降…

c语言float二进制输出代码_C语言学习笔记——学前知识概述

将我大一学习C语言时做的笔记拿来与大家分享&#xff0c;内容比较浅显&#xff0c;比较适合初学者&#xff0c;如有错误还请见谅&#xff0c;提出改正&#xff0c;谢谢&#xff01;前言&#xff1a;此C语言笔记是本人在自学时记录的一些重点或初学者常犯的错误&#xff0c;希望…

[Codevs] 1081 线段树练习 2 ----“分块!”

1081 线段树练习 2 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description给你N个数&#xff0c;有两种操作 1&#xff1a;给区间[a,b]的所有数都增加X 2&#xff1a;询问第i个数是什么&#xff1f; 输入描述 Input Description第一行一个正整数n&#…

github上的python爬虫_python爬虫入门(2):让你的github项目火起来

最近闲的比较无聊&#xff0c;于是想做一个自动star你的项目的爬虫玩玩。不然star数太低了&#xff0c;也比较难看。思路是准备注册成批的github帐号&#xff0c;然后挨个给你点star。STEP.1 工具准备我用的是python 2.7.10&#xff0c;本次实验不需要下载依赖库&#xff0c;用…

[Codevs] 1082 线段树练习3

1082 线段树练习 3 时间限制: 3 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description给你N个数&#xff0c;有两种操作&#xff1a; 1&#xff1a;给区间[a,b]的所有数增加X 2&#xff1a;询问区间[a,b]的数的和。 输入描述 Input Description第一行一个正整数n&a…

linux环境下远程访问ftp

sftp ftpuser127.0.0.1使用sftp命令 ftpuser是用户名 127.0.0.1是目标ip 亲测好使。转载于:https://www.cnblogs.com/zjiacun/p/7513938.html

perfectmoney php接口_Perfect Money完美货币注册和用支付宝提现方法

一、PerfectMoney介绍&#xff1a;PerfectMoney(简称PM)是一个瑞士的电子支付系统&#xff0c;类似于PP/AP/LR&#xff0c;也是一种国际网银&#xff0c;可以用来交易美元(USD)/欧元(EURO)等国际货币。与其他网银不同的是&#xff0c;PM可以直接和国内的银行卡相连&#xff0c;…

双摄测距原理_双摄像头系列原理深度剖析

http://www.dzsc.com/data/2016-7-13/110171.html如之前文章介绍&#xff0c;双摄像头的应用主要分为&#xff1a;距离相关的应用&#xff0c;光学变焦&#xff0c;暗光补偿以及3D拍摄和建模。每种应用的原理都有些不同&#xff0c;我们就分别介绍一下相关的原理&#xff1a;从…

利用Maven快速创建一个简单的spring boot 实例

Spring Boot的好处&#xff1a;spring boot 大大减少了 使用spring的配置 和大量 xml 文件&#xff0c;并有效解决的项目之间的依赖问题&#xff0c;为想使用 spring项目 大大减轻的工作量 1.先创建一个Maven项目 2.配置pom.xml <project xmlns"http://maven.apache.or…

mysql主从同步原理_mysql主从同步以及原理

mysql主从复制介绍当前的生产工作中&#xff0c;大多数应用的mysql主从同步都是异步的复制方式&#xff0c;即不是严格实时的数据同步。实时和异步&#xff1a;同步复制: 指的是客户端连接到MySQL主服务器写入一段数据,MySQL主服务器同步给MySQL从服务器需要等待从服务器发出同…

mysql不兼容_mysql5.7 不兼容问题

通过navicat工具导入psc数据库备份文件&#xff0c;报错如下&#xff0c;mysql版本5.7执行如下语句不通过DROP TABLE IF EXISTS guard_user;CREATE TABLE guard_user (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 操作员编号,login_account varchar(16) NOT NULL …

MSSQL 如何采用sql语句 获取建表字段说明、字段备注、字段类型、字段长度

转自: http://www.maomao365.com/?p4983 <span style"color:red;font-weight:bold;">下文讲述-采用sql脚本获取指定表中所有列对应的说明信息,脚本如下所示:</span> SELECT (case when a.colorder1 then d.name else end) [数据表名称], a.colorder […

oracle 时间加减

sysdate1 加一天sysdate1/24 加1小时sysdate1/(24*60) 加1分钟sysdate1/(24*60*60) 加1秒钟类推至毫秒0.001秒加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char…

mysql数据库层次结构_MySQL逻辑分层介绍

上一篇文章主要介绍了MySQL在Ubuntu18.04系统上的安装&#xff0c;以及安装过程中可能会遇到的一些问题的解决方案。在这篇文章里&#xff0c;开始介绍MySQL数据库的逻辑分层。通过本文的介绍&#xff0c;可以大致了解到MySQL的语句从客户端发出请求后&#xff0c;在服务器经历…

嵌入式 Linux 的分类

http://blog.csdn.net/lu_embedded/article/details/60469851 由于 Linux 所具备的开源、稳定、高效、易裁剪、硬件支持广泛等优点&#xff0c;使得它在嵌入式系统领域最近十几年内迅速崛起。目前嵌入式 Linux 系统开发已经开辟了很大的市场&#xff0c;同时也开发出很多成型的…