Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jsp中读取pdf时出现异常的原因_Jsp_Jakarta Ee_Itext - Fatal编程技术网

在jsp中读取pdf时出现异常的原因

在jsp中读取pdf时出现异常的原因,jsp,jakarta-ee,itext,Jsp,Jakarta Ee,Itext,我已经编写了一个jsp servlet来使用itextpdf读取pdf,我最终遇到了异常,有人能告诉我异常的原因吗 page.jsp <html> <%@page import="java.io.File"%> <%@page import="java.io.*"%> <%@page import="javax.servlet.*"%> <%@page import="com.itextpdf.text.Image"%> <%@p

我已经编写了一个jsp servlet来使用itextpdf读取pdf,我最终遇到了异常,有人能告诉我异常的原因吗

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>


嗯,如果将PDF文件括在
标记之间,则无法在浏览器中显示PDF。这是非法的语法

此外,您正在将PDF写入
FileOutputStream
。那是。。。很奇怪。您需要将PDF字节发送到ServletOutputStream

这是最简单的Hello World Servlet:。 在创建
PdfWriter
实例时,是否看到使用了哪个OutputStream
response.getOutputStream()
是一个
ServletOutputStream
实例

当然,虽然这适用于大多数浏览器,但在某些旧浏览器版本中会遇到一些问题。这就是为什么还有这个例子:


最后,您是一名JSP开发人员,所以您从JSP课程中记得,从JSP创建二进制文件总是一个坏主意。优秀的开发人员编写Servlet来创建二进制文档。

您可以上传PDF吗?现在更改了代码,我可以读写PDF,但内容没有显示在jsp中,上面是最新的代码Michaël Demey是的,我可以上传和下载,但需要在jsp中显示写作内容