java导入导出pdf文档实践 收藏
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();
}
}
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();
}
}
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);
}
} 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) ...{
}
}
}a