2013-04-25 3 views
0

Я написал Jsp сервлет для чтения PDF с помощью itextpdf, я в конечном итоге, за исключением Может кто-нибудь сказать мне причину исключенияИсключение Причина при чтении PDF в JSP

page.jsp

<html> 
<%@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"%> 
<% 
    response.reset(); 
    response.setContentType("application/pdf"); 
    response.setHeader("Content-Disposition", 
      "inline;filename=Saba_PhBill.pdf"); 
    File file = new File(
      "D:\\TNWRD_Documents\\Knowladge_Base\\CHAPTER_I.pdf"); 
    String OUTPUTFILE = "D:\\TNWRD_Documents\\CHAPTER_II.pdf"; 
    FileInputStream in = new FileInputStream(file); 
    PdfReader reader = new PdfReader(in); 
    Document document = new Document(); 
    //PdfWriter writer = PdfWriter.getInstance(document, 
    //  new FileOutputStream(OUTPUTFILE)); 
    OutputStream outputStream = new FileOutputStream(OUTPUTFILE); 
    PdfWriter writer = PdfWriter.getInstance(document, outputStream); 
    document.open(); 
    //PdfReader reader = new PdfReader(INPUTFILE); 
    PdfContentByte cb = writer.getDirectContent(); 
    int n = reader.getNumberOfPages(); 
    PdfImportedPage pages; 
    // Go through all pages 
    for (int i = 1; i <= n; i++) { 
     // Only page number 2 will be included 
     pages = writer.getImportedPage(reader, i); 
     Image instance = Image.getInstance(pages); 
     document.add(instance); 
     cb.addTemplate(pages, 0, 0); 
     document.addHeader("pdf", "pdf"); 
    } 
    document.close(); 
%> 
</html> 
+0

Не могли бы вы загрузить свой PDF-документ? –

+0

теперь изменил код, который я умею читать и писать в формате PDF, но содержимое не отображается в jsp, а приведенный выше - последний код –

+0

Michaël Demey да, я могу загружать и загружать, но мне нужно отображать содержание записи в jsp –

ответ

1

Ну, вы не сможете отображать PDF-файл в браузере, если вы вложите файл PDF между <html> и </html> тегами. Это незаконный синтаксис.

Кроме того, вы пишете PDF до FileOutputStream. Это ... очень странно. Вам необходимо отправить байты PDF в ServletOutputStream.

Это самый простой Hello World Servlet: Hello. Вы видите, какой OutputStream используется при создании экземпляра PdfWriter? response.getOutputStream() - пример ServletOutputStream.

Конечно, хотя это работает для большинства браузеров, вы столкнетесь с некоторыми проблемами с некоторыми устаревшими версиями браузера. Вот почему есть и этот пример: PdfServlet

Наконец, вы разработчик JSP, поэтому вы помните из своих курсов JSP, что создание двоичных файлов из JSP - это всегда плохая идея. Хорошие разработчики пишут сервлет для создания двоичных документов.

+0

понял Ответ bruno ur был прост и удобен. –

Смежные вопросы