【问题标题】:BufferedReader for Pdf File in Java ServletJava Servlet 中 Pdf 文件的 BufferedReader
【发布时间】:2019-02-06 08:49:33
【问题描述】:

我的 BufferedReader 损坏了我的 Pdf 文件并将所有内容都写入第一行。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    createPdf();
    response.setHeader("Content-disposition","attachment; filename=\""+"myPdf.pdf"+"\"");
    BufferedReader reader = null;

    try {
        File file = new File("myPath\\myNewPdf.pdf");
        reader = new BufferedReader(new FileReader(file));

        String line;
        while ((line = reader.readLine()) != null) {
            response.getWriter().append(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我只是想阅读 Pdf 并将其写入新的以供下载。

【问题讨论】:

  • BufferedReader 并不意味着读取非文本文件,使用较低级别的类(例如FileInputStream),请参阅:stackoverflow.com/questions/1442893/…
  • BufferedReaderReaderReader 用于字符数据。 PDF 文件不是字符数据,也不包含行。您应该使用InputStream。这些都有记录。
  • 嗯,正如 JavaDoc 中定义的那样,Reader 抽象类是一个用于读取字符流的抽象类 - 但 PDF 文件是二进制文件,而不是字符流.使用InputStream 读取文件,使用response.getOutputStream() 写入文件。

标签: java pdf servlets


【解决方案1】:

这成功了谢谢@user207421

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        createPdf();
        response.setHeader("Content-disposition","attachment; filename=\""+"myNewPdf.pdf"+"\"");

        InputStream inputStream = new FileInputStream("myPath\\myPdf.pdf");
        int data;

        while( (data = inputStream.read()) >= 0 ) {
            response.getWriter().write(data);
        }
        inputStream.close();
    }

【讨论】:

  • response.getWriter().write(data); 稍后可能会导致问题 - response.getWriter() 返回 PrintWriter,这同样用于输出字符数据,但您正在写入二进制数据。使用当前文件它可能会工作,但我建议使用response.getOutputStream() 进行输出。
猜你喜欢
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多