我正在调用一个索引页面,该页面将参数发送到以PDF格式运行jasper报告的页面。但是当我运行项目时,我遇到生成PDF的问题,说PDF格式可能不正确或损坏(Mozilla和IE11)
“的index.jsp”
<form method="POST" action="ShowPdf.jsp">
<input type="text" value="" id ="personId" name="personId">
<input type="submit" value="show">
</form>
int id=Integer.parseInt(request.getParameter("personId"));
try
{
Connection conn=null;
//Connecting to the MySQL database
Class.forName("com.mysql.jdbc.Driver").newInstance();
conn = DriverManager.getConnection("jdbc:mysql:/localhost:3306/bd_hospital_nikdu", "root", "Admin123");
File reportFile = new File(application.getRealPath("//reports//newReport2.jasper"));//your report_name.jasper file
Map parameters = new HashMap();
parameters.put("personId",id);
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);
//byte[] bytes = JasperRunManager.runReportToHtmlFile(reportFile.getPath(),null, conn).getBytes();
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream outStream = response.getOutputStream();
outStream.write(bytes, 0, bytes.length);
outStream.flush();
outStream.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
答案 0 :(得分:0)
这是我的解决方案
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="net.sf.jasperreports.view.JRViewer" %>
<%@ page import="com.itextpdf.text.*"%>
<%@ page import="com.itextpdf.text.pdf.*"%>
<%@ page import="java.util.HashMap" %>
<%
/*Parametros para realizar la conexión*/
Connection conexion;
Class.forName("com.mysql.jdbc.Driver").newInstance();
conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/gae", "root", "");
/*Establecemos la ruta del reporte*/
File reportFile = new File(application.getRealPath("reportes//prueba1.jasper"));
/* No enviamos parámetros porque nuestro reporte no los necesita asi que escriba cualquier cadena de texto ya que solo seguiremos el formato del método runReportToPdf*/
Map parameters = new HashMap();
parameters.put("cedula", "cedula");
parameters.put("nombre", "nombre");
/*Enviamos la ruta del reporte, los parámetros y la conexión(objeto Connection)*/
byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conexion);
/*Indicamos que la respuesta va a ser en formato PDF*/
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length); /*Limpiamos y cerramos flujos de salida*/
ouputStream.flush();
ouputStream.close();
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
</body>
</html>