L'affichage des pdf en jsp

J'ai écrit une page jsp pour afficher le contenu de fichiers pdf, mais à la fin avec des codes ascii dans les jsp. Je veux afficher le contenu de fichiers pdf en jsp. Quelle est la partie que j'ai manqué. Quand j'essaye d'écrire la lecture de contenu en pdf il montre que les valeurs ascii et pas dans un format lisible par l'

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=${encoding}"></head>
<%@page import="java.io.File"%>
<%@page import="java.io.*"%>
<%@page import="javax.servlet.*"%>
<%@page import="com.itextpdf.text.Image"%>
<%@page import="com.itextpdf.text.Document"%>
<%@page import="com.itextpdf.text.DocumentException"%>
<%@page import="com.itextpdf.text.pdf.PdfReader"%>
<%@page import="com.itextpdf.text.pdf.PdfImportedPage"%>
<%@page import="com.itextpdf.text.pdf.PdfWriter"%>
<%@page import="com.itextpdf.text.pdf.PdfContentByte"%>
<%@ page language="java" contentType="application/pdf; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
response.reset();
response.setContentType("application/pdf");
File file = new File("D:\\TNWRD_Documents\\CHAPTER_II.pdf");
response.setHeader("Content-Type", "application/pdf");
response.setHeader("Content-Disposition",
"inline;filename=Saba_PhBill.pdf");
response.setContentLength((int) file.length());
response.setHeader("Content-Type",
getServletContext().getMimeType(file.getName()));
response.setHeader("Content-Length", String.valueOf(file.length()));
//OPen an input stream to the file and post the file contents thru the
//servlet output stream to the browser
FileInputStream in = new FileInputStream(file);
ServletOutputStream outs = response.getOutputStream();
response.setContentLength(in.available());
byte[] buf = new byte[8192];
int c = 0;
try {
while ((c = in.read(buf, 0, buf.length)) > 0) {
//System.out.println("size:"+c);
outs.write(buf, 0, c);
out.write(outs.toString());
}
} catch (IOException ioe) {
ioe.printStackTrace(System.out);
} finally {
outs.flush();
outs.close();
in.close();
}
%>
</html>
  • Avant votre JSP directives, vous avez un en-tête HTTP. Lorsque votre code JSP exécute response.reset(), cet en-tête peut très bien avoir déjà été envoyé. En outre, vous envoyer une clôture </html> tag après l'envoi du PDF, ce qui rend également le résultat d'une défaillance de PDF.
  • Mon commentaire est d'une nature plus générale: JSP technologie a été introduite pour éliminer la nécessité de polluants Java code avec HTML. Vous avez écrit une servlet dans JSP, et en quelque sorte réussi à le polluer avec du code HTML.
  • Il est intéressant que vous tagged cette question avec [servlets], même si vous ne sont nulle part à l'aide d'une servlet dans votre code à tout, mais il est le droit de réponse à votre problème concret! En fait, tu connaissais déjà la réponse à l'avance, vous venez de ne pas le voir.
InformationsquelleAutor user1989615 | 2013-04-26