1:MySQL数据库存储pdf流字段为:filed name: filestream type: MEDIUMBLOB
2:导入pdf文件到mysql 数据库
private
void
doWrite()
{
try {
if (new File("D:/Sun.pdf").exists()) {
FileInputStream fis = new FileInputStream(new File(
"D:/Sun.pdf"));
PreparedStatement pstmt = cnn
.prepareStatement("insert into tb(filestream) values(?) ");
pstmt.setBinaryStream(1, fis, 1024);
pstmt.execute();
}
} catch (Exception e) {
e.printStackTrace();
}
}
try {
if (new File("D:/Sun.pdf").exists()) {
FileInputStream fis = new FileInputStream(new File(
"D:/Sun.pdf"));
PreparedStatement pstmt = cnn
.prepareStatement("insert into tb(filestream) values(?) ");
pstmt.setBinaryStream(1, fis, 1024);
pstmt.execute();
}
} catch (Exception e) {
e.printStackTrace();
}
}
3:从mysql数据库读取pdf流到网页客户端显示
private
void
doRead(HttpServletRequest request, HttpServletResponse response)
{
try {
ByteArrayOutputStream ba = new ByteArrayOutputStream();
Statement stmt = cnn.createStatement();
ResultSet rs = stmt.executeQuery("select filestream from tb where id=1");
rs.next();
InputStream is = rs.getBinaryStream(1);
int c;
while ((c = is.read()) != -1)
ba.write(c);
Document document = new Document(PageSize.A4, 36, 36, 36, 36);
PdfWriter writer = PdfWriter.getInstance(document, ba);
// document.close();
response.setContentType("application/pdf");
response.setContentLength(ba.size());
ServletOutputStream out = response.getOutputStream();
ba.writeTo(out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
ByteArrayOutputStream ba = new ByteArrayOutputStream();
Statement stmt = cnn.createStatement();
ResultSet rs = stmt.executeQuery("select filestream from tb where id=1");
rs.next();
InputStream is = rs.getBinaryStream(1);
int c;
while ((c = is.read()) != -1)
ba.write(c);
Document document = new Document(PageSize.A4, 36, 36, 36, 36);
PdfWriter writer = PdfWriter.getInstance(document, ba);
// document.close();
response.setContentType("application/pdf");
response.setContentLength(ba.size());
ServletOutputStream out = response.getOutputStream();
ba.writeTo(out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
4:下载jar包:itext-2.0.6.jar iTextAsian.jar(此包是解决中文乱码用)
5:完整源码
import
java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
public class PDFGenerateServlet extends HttpServlet {
private Connection cnn = null;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
InitConnection();
String s = request.getParameter("method");
if (s.equals("w")) {
doWrite();
}
if (s.equals("r")) {
doRead(request, response);
}
/*
* Statement stmt = cnn.createStatement(); ResultSet rs =
* stmt.executeQuery(""); InputStream is = rs.getBinaryStream("");
* int c; while ((c = is.read()) != 1) ba.write(c); // ba=new
* ByteArrayOutputStream(rs.getBlob("")); PdfWriter writer =
* PdfWriter.getInstance(document, ba); document.open();
* document.add(new Paragraph("Hello World"));
*/
} catch (Exception e) {
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
private void doWrite() {
try {
if (new File("D:/Sun.pdf").exists()) {
FileInputStream fis = new FileInputStream(new File(
"D:/Sun.pdf"));
PreparedStatement pstmt = cnn
.prepareStatement("insert into tb(filestream) values(?) ");
pstmt.setBinaryStream(1, fis, 1024);
pstmt.execute();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void doRead(HttpServletRequest request, HttpServletResponse response) {
try {
ByteArrayOutputStream ba = new ByteArrayOutputStream();
Statement stmt = cnn.createStatement();
ResultSet rs = stmt.executeQuery("select filestream from tb where id=1");
rs.next();
InputStream is = rs.getBinaryStream(1);
int c;
while ((c = is.read()) != -1)
ba.write(c);
Document document = new Document(PageSize.A4, 36, 36, 36, 36);
PdfWriter writer = PdfWriter.getInstance(document, ba);
// document.close();
response.setContentType("application/pdf");
response.setContentLength(ba.size());
ServletOutputStream out = response.getOutputStream();
ba.writeTo(out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
private void InitConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
cnn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jms", "root", "aastocks");
} catch (Exception e) {
}
}
}
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;
public class PDFGenerateServlet extends HttpServlet {
private Connection cnn = null;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
InitConnection();
String s = request.getParameter("method");
if (s.equals("w")) {
doWrite();
}
if (s.equals("r")) {
doRead(request, response);
}
/*
* Statement stmt = cnn.createStatement(); ResultSet rs =
* stmt.executeQuery(""); InputStream is = rs.getBinaryStream("");
* int c; while ((c = is.read()) != 1) ba.write(c); // ba=new
* ByteArrayOutputStream(rs.getBlob("")); PdfWriter writer =
* PdfWriter.getInstance(document, ba); document.open();
* document.add(new Paragraph("Hello World"));
*/
} catch (Exception e) {
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
doGet(request, response);
}
private void doWrite() {
try {
if (new File("D:/Sun.pdf").exists()) {
FileInputStream fis = new FileInputStream(new File(
"D:/Sun.pdf"));
PreparedStatement pstmt = cnn
.prepareStatement("insert into tb(filestream) values(?) ");
pstmt.setBinaryStream(1, fis, 1024);
pstmt.execute();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void doRead(HttpServletRequest request, HttpServletResponse response) {
try {
ByteArrayOutputStream ba = new ByteArrayOutputStream();
Statement stmt = cnn.createStatement();
ResultSet rs = stmt.executeQuery("select filestream from tb where id=1");
rs.next();
InputStream is = rs.getBinaryStream(1);
int c;
while ((c = is.read()) != -1)
ba.write(c);
Document document = new Document(PageSize.A4, 36, 36, 36, 36);
PdfWriter writer = PdfWriter.getInstance(document, ba);
// document.close();
response.setContentType("application/pdf");
response.setContentLength(ba.size());
ServletOutputStream out = response.getOutputStream();
ba.writeTo(out);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
private void InitConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
cnn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/jms", "root", "aastocks");
} catch (Exception e) {
}
}
}