源代码请从这里下载:

http://download.csdn.net/source/2984395

使用的是JSP编程

‍ 这是导出后的效果

这是数据库中的内容

‍ 部分代码:

<%@ page language="java" contentType="text/html" pageEncoding="GBK"%>

<%@ page import="com.jwy.dao.*" %>

<%@ page import="com.lowagie.text.pdf.*" %>

<%@ page import="com.lowagie.text.*" %>

<%@ page import="java.io.*" %>

<html>

<head>

<title>'index.jsp'</title>

<!--

<link rel="stylesheet" type="text/css" href="styles.css">

-->

</head>

<body>

<%

out.clear();

out = pageContext.pushBody();

response.setHeader("Content-Disposition","attachment;filename=stuInfo.pdf");

response.setContentType("application/x-download; charset=utf-8");

java.util.List<String[]> list = new StuInfoDao().findByAll();

//创建一个对中文字符集支持的基础字体

BaseFont bfChinese = BaseFont.createFont("STSong-Light",

"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

//使用基础字体对象创建新字体对像,粗体12号红色字

Font font = new Font(bfChinese, 12, Font.BOLD);

Document document = new Document(PageSize.A4);//创建document对象

PdfWriter.getInstance(document, response.getOutputStream());//创建书写器

document.open();//打开文档

String title = "学生信息表"; //文档标题

Paragraph paragraph = new Paragraph(title, font); //创建段落,并设置字体

paragraph.setAlignment(Paragraph.ALIGN_CENTER);//设置段落居中

document.add(paragraph);//将段落添加到文档中

PdfPTable table = new PdfPTable(5);//建立一个5列的空白表格对象

table.setSpacingBefore(30f);//设置表格上面空白宽度

String[] tableTitle = { "学号", "姓名", "性别", "出生日期", "联系电话" };//表头

for (int i = 0; i < tableTitle.length; i++) {//循环写入表头

paragraph = new Paragraph(tableTitle[i], new Font(bfChinese, 10,Font.BOLD));

PdfPCell cell = new PdfPCell(paragraph);//建立一个单元格

cell.setHorizontalAlignment(Element.ALIGN_CENTER);//设置内容水平居中显示

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

table.addCell(cell);//将单元格加入表格

}

for(int i=0;i<list.size();i++){//循环写入表文

String[] stuInfo = list.get(i);

for(int j=1;j<stuInfo.length;j++){

PdfPCell cell = new PdfPCell(new Paragraph(stuInfo[j],

new Font(bfChinese, 10)));//建立一个单元格

cell.setHorizontalAlignment(Element.ALIGN_CENTER);//设置内容水平居中显示

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

table.addCell(cell);//将单元格加入表格

}

}

document.add(table);//将表格加入文档中

document.close();//关闭文档

%>

</body>

</html>

PDF的更多相关文章

  1. 【实战Java高并发程序设计 7】让线程之间互相帮助--SynchronousQueue的实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  2. 【实战Java高并发程序设计6】挑战无锁算法:无锁的Vector实现

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  3. 【实战Java高并发程序设计 5】让普通变量也享受原子操作

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference [实战Java高并发程序设计 3]带有时间戳的对象 ...

  4. 【实战Java高并发程序设计 4】数组也能无锁:AtomicIntegerArray

    除了提供基本数据类型外,JDK还为我们准备了数组等复合结构.当前可用的原子数组有:AtomicIntegerArray.AtomicLongArray和AtomicReferenceArray,分别表 ...

  5. 【实战Java高并发程序设计 3】带有时间戳的对象引用:AtomicStampedReference

    [实战Java高并发程序设计 1]Java中的指针:Unsafe类 [实战Java高并发程序设计 2]无锁的对象引用:AtomicReference AtomicReference无法解决上述问题的根 ...

  6. 【实战Java高并发程序设计 1】Java中的指针:Unsafe类

    是<实战Java高并发程序设计>第4章的几点. 如果你对技术有着不折不挠的追求,应该还会特别在意incrementAndGet() 方法中compareAndSet()的实现.现在,就让我 ...

  7. 《实战java高并发程序设计》源码整理及读书笔记

    日常啰嗦 不要被标题吓到,虽然书籍是<实战java高并发程序设计>,但是这篇文章不会讲高并发.线程安全.锁啊这些比较恼人的知识点,甚至都不会谈相关的技术,只是写一写本人的一点读书感受,顺便 ...

  8. 《实战Java高并发程序设计》读书笔记

    文章目录 第二章 Java并行程序基础 2.1 线程的基本操作 2.1.1 线程中断 2.1.2 等待(wait)和通知(notify) 2.1.3 等待线程结束(join)和谦让(yield) 2. ...

  9. 《实战Java高并发程序设计》读书笔记三

    第三章 JDK并发包 1.同步控制 重入锁:重入锁使用java.util.concurrent.locks.ReentrantLock类来实现,这种锁可以反复使用所以叫重入锁. 重入锁和synchro ...

  10. 《实战Java高并发程序设计》读书笔记二

    第二章  Java并行程序基础 1.线程的基本操作 线程:进程是线程的容器,线程是轻量级进程,是程序执行的最小单位,使用多线程而不用多进程去进行并发程序设计是因为线程间的切换和调度的成本远远的小于进程 ...

随机推荐

  1. 在VisualStudio2012环境下安装ArcEngine 10.0

    因为ArcEngine10.0默认对应的开发工具为VS2010,在安装了VS2012的情况下安装ArcEngine10.0(注意:我自己的环境为VS2012和ArcEngine10.0,对于其他版本在 ...

  2. Servlet目录

    Servlet目录   课时1 Servlet概述12:30 课时2 servlet的第一个例子31:08 课时3 servlet的生命周期18:18 课时4 HttpServlet详细讲解31:43 ...

  3. 十分钟使用github pages +hexo拥有个人博客

    最近想自己搭建自己的个人博客,毕竟这样觉得比较geek,但是搜了资料,感觉良莠不齐,好多东西说的含糊不清,于是自己记录下自己的搭建过程. 1, 安装nodejs 2, 安装git 3, 申请githu ...

  4. ss

    110000北京120000天津130000河北140000山西150000内蒙古210000辽宁220000吉林230000黑龙江310000上海320000江苏330000浙江340000安徽35 ...

  5. cv_prj2

    Computer Vision Project 2 – Harris Corner Detector 姓名: 王兴路 学号: 3140102282 指导老师: 宋明黎 2016-12-16 19:30 ...

  6. git conifg

    1. git config简介 我们知道config是配置的意思,那么git config命令就是对git进行一些配置.而配置一般都是写在配置文件里面,那么git的配置文件在哪里呢?互动一下,先问下大 ...

  7. C#方法中三个重要的参数:out、ref、params

    备注:适用于初学者,自学于传智播客. 1.out参数. 概念:如果在一个方法中,返回多个相同类型值的时候,可以考虑返回一数组.但是返回多个不同类型值的时候,返回数组显然不能解决问题,这时就引入out参 ...

  8. Unity随记

    //切换场景时怎么能让音乐不停? /////////////////////////////////////////////////////////////////// //切换场景时怎么防止某个物体 ...

  9. iOS基础之网络请求相关

    1.AFNetwork二次封装方法一: #import <Foundation/Foundation.h> @interface BeeNetworkManager : NSObject ...

  10. hdu 5976 Detachment

    Detachment Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...