pdf数据表格的生成与导出_Fly_Sky520的博客-CSDN博客_pdf api 生成表格


本站和网页 https://blog.csdn.net/fly_sky520/article/details/5698719 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

pdf数据表格的生成与导出_Fly_Sky520的博客-CSDN博客_pdf api 生成表格
pdf数据表格的生成与导出
Fly_Sky520
于 2010-06-28 10:29:00 发布
4670
收藏
文章标签:
string
path
exception
date
byte
stream
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fly_sky520/article/details/5698719
版权
1,pdf生成。pdf的生成要利用iText。
 package pdfOutPut;
import java.awt.Color;
import java.io.FileOutputStream;
import java.util.Date;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
//以下是iText包中的类
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
public class RepeatingTable {
//生成的pdf名称,以时间命名
private static String pdfName = getNowTime() + ".pdf";
//当前的项目路径
private String PDF_PATH = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
//get方法,获取pdf名称
public String getPdfName() {
return pdfName;
public RepeatingTable() {
//首先生成一个document对象
Document document = new Document(PageSize.A4);
try {
//我准备把pdf文件放在项目文件夹中的WEB-INF//resources/PDF/ 下面
if (PDF_PATH.indexOf("WEB-INF") > 0) {
PDF_PATH = PDF_PATH.substring(0, PDF_PATH.indexOf("/WEB-INF/")) + "/resources/PDF/";
System.out.println(PDF_PATH + "_PDF_PATH");
File file = new File(PDF_PATH);
//利用iText的PdfWriter对象生成pdf文件,文件路径与名称如:WEB-INF//resources/PDF/2010-06-28 10:10:10.pdf
PdfWriter.getInstance(document, new FileOutputStream(file + "/" + pdfName));
//一些简单的pdf文件信息,这是对生成的pdf文件右键属性看的一些信息
document.addAuthor("ZhouFly@osunda.com");
document.addSubject("资源列表");
//打开pdf文件,准备写操作
document.open();
//生成一个4列的表格
int row = 4;
Table datatable = new Table(row);
//定义没列宽度
int headerwidths[] = {10, 20, 20, 50};
datatable.setWidths(headerwidths);
datatable.setWidth(100);
//边线宽度
datatable.setPadding(3);
//修改编码,由于iText不支持亚洲语言,需要添加亚洲语言包iTextAsian.jar 可以在google上自己搜索,然后导入即可
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H",
BaseFont.NOT_EMBEDDED);
//字体的一个设置
Font FontChinese = new Font(bfChinese, 24, Font.BOLD);
//生成一个小单元 此单元占4列 其实这时生成表头,表头以endHeaders()方法结束
Cell cell = new Cell(new Phrase(
"设备报表", FontChinese));
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setLeading(30);
cell.setColspan(row);
cell.setBorder(Rectangle.NO_BORDER);
cell.setBackgroundColor(new Color(0xC0, 0xC0, 0xC0));
datatable.addCell(cell);
datatable.setBorderWidth(2);
datatable.setAlignment(1);
FontChinese = new Font(bfChinese, 16, Font.BOLD);
//由于不支持亚洲语言,每词写入内容的时候都要采用FontChinese编码
datatable.addCell(new Phrase("资源Id", FontChinese));
datatable.addCell(new Phrase("资源描述", FontChinese));
datatable.addCell(new Phrase("资源名称", FontChinese));
datatable.addCell(new Phrase("资源内容", FontChinese));
datatable.endHeaders();
datatable.setBorderWidth(2);
//重新设置字体格式
FontChinese = new Font(bfChinese, 12, Font.NORMAL);
//数据列表
List ar = getAllResource();
for (int i = 0; i < ar.size() - 1; i = i + 4) {
datatable.setAlignment(Element.ALIGN_LEFT);
datatable.addCell(new Phrase(ar.get(0 + i).toString(), FontChinese));
datatable.addCell(new Phrase(ar.get(1 + i).toString(), FontChinese));
datatable.addCell(new Phrase(ar.get(2 + i).toString(), FontChinese));
datatable.addCell(new Phrase(ar.get(3 + i).toString(), FontChinese));
FontChinese = new Font(bfChinese, 14, Font.NORMAL);
document.add(new Paragraph("报表生成时间:" + getNowTime(), FontChinese));
document.add(datatable);
} catch (Exception e) {
e.printStackTrace();
document.close();
//全局的获取当前时间
public static String getNowTime() {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = formatter.format(new Date());
return now;
//生成伪数据测试
public static List getAllResource(){
List l = new ArrayList();
int i = 64;
while(i>0){
l.add(i);
i--;
return l;

2,pdf的导出。pdf的导出我用到了一个叫icefaces的jsf框架。也可以用javascript写一个导出的方法。
1)在jsp页面上,代码如下:
<ice:outputResource id="pdfbutton"
fileName="#{PdfResources.pdfName}"
mimeType="application/pdf"
resource="#{PdfResources.pdfResourceDynFileName}"
shared="false"
label="下载"
type="button"/> 
2)java后台代码:
package pdfOutPut;
import com.icesoft.faces.context.Resource;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.Serializable;
import java.util.Date;
import javax.faces.FacesException;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
public class PdfResources{
private Resource pdfResourceDynFileName;
//这个目录就是我们存放pdf文件的目录
public static final String RESOURCE_PATH = "/resources/PDF/";
public static String pdfName = "下载";
public String getPdfName() {
return pdfName;
public static void setPdfName(String pdfName) {
PdfResources.pdfName = pdfName;
public PdfResources() {
//在这里调用pdf数据表的生成方法
RepeatingTable rt = new RepeatingTable();
//然后获取pdf文件名称
pdfName = rt.getPdfName();
System.out.println("pdfName_" + pdfName);
try {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
pdfResourceDynFileName = new MyResource(ec, pdfName);
} catch (Exception e) {
e.printStackTrace();
public static byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
int len = 0;
while ((len = input.read(buf)) > -1) {
output.write(buf, 0, len);
return output.toByteArray();
public Resource getPdfResourceDynFileName() {
return pdfResourceDynFileName;
public void setPdfResourceDynFileName(Resource pdfResourceDynFileName) {
this.pdfResourceDynFileName = pdfResourceDynFileName;
class MyResource implements Resource, Serializable {
private String resourceName;
private InputStream inputStream;
private final Date lastModified;
private ExternalContext extContext;
public MyResource(ExternalContext ec, String resourceName) {
this.extContext = ec;
this.resourceName = resourceName;
this.lastModified = new Date();
public InputStream open() throws IOException {
if (inputStream == null) {
//PdfResources.RESOURCE_PATH + resourceName 就是我们生成的pdf文件
InputStream stream = extContext.getResourceAsStream(PdfResources.RESOURCE_PATH + resourceName);
byte[] byteArray = PdfResources.toByteArray(stream);
inputStream = new ByteArrayInputStream(byteArray);
return inputStream;
public String calculateDigest() {
return resourceName;
public Date lastModified() {
return lastModified;
public void withOptions(Options arg0) throws IOException {

Fly_Sky520
关注
关注
点赞
收藏
打赏
评论
pdf数据表格的生成与导出
1,pdf生成。pdf的生成要利用iText。package pdfOutPut;import java.awt.Color;import java.io.FileOutputStream;import java.util.Date;import java.io.File;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;//以下是iText包中的类impo
复制链接
扫一扫
设计文档模板-java开发.pdf
07-22
1WMS 货品管理 根据用户登陆信息找到对应仓储公 司进行货品分类管理的初始显示 货品管理1 初始货品分类 货品操作 1 1 1 1 1 1 1 1 1 1 1 1 1 . . . . . . . . . . . . . 1 2 3 4 5 6 7 8 9 1 1 1 1 新 修 删 查 增 新 复 修 删 0 1 2 3 增 改 除 询 加 增 制 改 除 查 查 导 新 货 货 货 货 货
java导出pdf、加表格、加水印
06-21
java导出pdf、加表格、加水印
全开源放心下载
参与评论
您还未登录,请先
登录
后发表或查看评论
itext生成PDF 缩放表格图片
最新发布
weixin_58215878的博客
09-30
76
itext生成PDF 缩放表格图片。
itext 导出pdf 表格生成、目录生成、支持中文
qq_25033003的博客
08-18
805
效果图
下载地址:http://download.csdn.net/download/qq_25033003/9940258
itext生成pdf文件-表格
08-11
NULL
博文链接:https://x125858805.iteye.com/blog/2239773
PDF模板报表导出(Java+Acrobat+itext)
libing1860的专栏
10-25
121
1、 首先要安装Adobe Acrobat,装好之后用Acrobat从一个word,excel或者pdf中转换一个pdf模板,我做的模板很简单,直接写一个简单的word再生成一个pdf表单,之后编辑文本域的名字属性等,根据名字在Java中导入。下图是Acrobat10打开的,每个文本域都有一个名字,在Java中根据名字(xh、xm等)添表格,(文本域的字体设置成kozuka Mincho,能接受汉...
java生成pdf表格
oMangGuoBuDing1的专栏
03-11
440
import jxl.Cell;
import jxl.Range;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class Pdf {
private PdfPTable table;
private PdfWriter writer;
private BaseFont bf;
private final Integer title1Hight=38;
..
itextPDF生成表格的pdf
孤独冰刃的博客
07-23
1387
今天主要介绍如何使用itextpdf生成表格式的pdf,在实际项目中也非常常用,首先举一个非常简单的例子,熟悉一下生成表格的基本步骤和流程:
public static void createSimpleTable() throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(DEST));
docume
Java使用lowagie根据模版动态生成PDF(无需额外设置系统字体)
u010797364的博客
08-22
542
Java动态生成pdf文件
Java—将数据生成pdf表格
Li_JingCheng的博客
10-25
1587
Java生成PDF文档(表格)
zrr_520的博客
03-06
2410
Java生成PDF文档(表格)
package org.jeecg.modules.esi.utils;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutput...
JavaScript生成表格PDF
weixin_43321726的博客
11-23
319
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Make PDF</title>
<style>
* {
python生成pdf报表_用python的reportlab库生成PDF报表
weixin_39747293的博客
12-02
246
前言reportlab不是python的标准库,它的强大之处在于能满足绝大部分报表的需求形式,这篇文章将介绍reportlab中基本常用的api,使用canvas画出一份整洁的PDF报表。内容均来自reportlab的官方user guide。依赖与安装首先,这里是官方的installation guide。reportlab目前应该只是支持到python2.7, py3的同学另想办法吧。楼主的环...
C#生成PDF表格
点点滴滴
07-29
3714
//#region ExportToPdf ///// ///// ///// ///// 数据 ///// ColumnName ///// 文件名称 ///// 文件名称 //private void ExportToPdf(DataTable dt, Hashtable ht, Hashtable htMain, string file
java生成pdf表格_java在pdf中生成表格的方法
weixin_32389853的博客
02-12
2352
1、目标在pdf中生成一个可变表头的表格,并向其中填充数据。通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表格。每天生成一个文件夹存储生成的pdf文件(文件夹的命名是年月日时间戳),如:20151110生成的文件可能在毫秒级别,故文件的命名规则是"到毫秒的时间戳-uuid",如:20151110100245690-ece540e5-77...
用C#实现生成PDF文档(原码)
zgqtxwd的专栏
05-01
156
<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"
java 如何在pdf中生成表格
哲洛不闹的专栏
01-12
302
1、目标在pdf中生成一个可变表头的表格,并向其中填充数据。通过泛型动态的生成表头,通过反射动态获取实体类(我这里是User)的get方法动态获得数据,从而达到动态生成表...
java使用itext生成表格pdf文件
Agoni_3的博客
03-26
1606
java使用itext生成表格pdf文件
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
Fly_Sky520
CSDN认证博客专家
CSDN认证企业博客
码龄13年
暂无认证
62
原创
19万+
周排名
114万+
总排名
19万+
访问
等级
2558
积分
52
粉丝
26
获赞
60
评论
19
收藏
私信
关注
热门文章
Extjs desktop类桌面系统的开发
28393
JAVA 注解的学习和对Spring注解的理解
18681
hibernate实现增删改查的各种方法
12072
在线的LINUX系统
8939
ExtJS4用法之TREE
7604
分类专栏
AIX学习笔记
1篇
Android开发学习
1篇
C++学习笔记
5篇
Java学习笔记
3篇
Flex编程
Javascript学习笔记
13篇
Linux笔记
3篇
SQL学习笔记
5篇
设计模式
工作笔记
4篇
数据结构
杂乱的学习笔记
7篇
EJB学习笔记
最新评论
JAVA 注解的学习和对Spring注解的理解
bokerr:
学习了
在线的LINUX系统
Piggy7127
回复
linlinxie:
root密码多少
JAVA 注解的学习和对Spring注解的理解
CHINAITCOM:
在线的LINUX系统
linlinxie:
密码是多少?
Linux下定时运行java程序的做法
筱白to:
话说这个需要导入第三方jar包吗...
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
几个学习blog
redis启动脚本
在线的LINUX系统
2015年2篇
2014年14篇
2013年4篇
2012年11篇
2011年16篇
2010年28篇
目录
目录
分类专栏
AIX学习笔记
1篇
Android开发学习
1篇
C++学习笔记
5篇
Java学习笔记
3篇
Flex编程
Javascript学习笔记
13篇
Linux笔记
3篇
SQL学习笔记
5篇
设计模式
工作笔记
4篇
数据结构
杂乱的学习笔记
7篇
EJB学习笔记
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
Fly_Sky520
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值