Httpservletresponse - 向其添加多个文档



有什么方法可以将多个文档添加到httpservletresponce中。

这是场景。

我正在循环浏览客户想要打印的文件名列表,并从FTP位置检索它们。现在我可以单独添加每个并在浏览器中显示它们。我想展示所有这些..一次..在一个浏览器中。

以下是我将一个文件发送到浏览器的方法。

is = ftp.retrieveFileStream(strFile);
                            ByteArrayOutputStream baos = convertTIFFtoPDF(is);
                            response.setContentType("application/pdf");
                            response.setContentLength(baos.size());
                            response.setHeader("Content-disposition",
                                    "attachment;filename=""
                                            + "importDocs.pdf" + """);
                            ServletOutputStream out = response
                                    .getOutputStream();
                            baos.writeTo(out);
                            out.flush();
                            out.close();

连接服务器中的所有 pdf 文件并作为一个 pdf 文件交付给浏览器怎么样?

根据要求添加更多信息:

如果你使用的是Linux,你可以很容易地使用gs或pdftk来实现这个目的。Windows 端口也应该可用。

您可以使用 gs 连接 pdf 文件,如下所示:

gs -q -sPAPERSIZE=a4 -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf [...] lastfile.pdf

您可以使用pdftk来连接pdf文件,如下所示:

pdftk *.pdf cat output onelargepdfile.pdf

因此,如果服务器安装了gs或pdftk,我将遵循以下步骤:

  1. 从远程位置(FTP 服务器)访问所有 pdf 文件到运行应用程序的服务器中的目录。确保每个 pdf 文件都有唯一的名称,以避免多个请求覆盖文件。

  2. 使用 servlet 中的系统命令执行工具 (Runtime.exec) 执行 gs 或 pdftk。确保执行的命令生成具有唯一文件名的串联 pdf。

  3. 使用与您
  4. 已经在使用的代码类似的代码将生成的级联 pdf 发送到浏览器。

  5. 清理服务器目录。

最后.. 我们来了

for (PdfBean pdfBean : list)
            {
                if(!pdfBean.getFileName().isEmpty()&&!pdfBean.getFileLocation().isEmpty()){

                msgDH.InsertUserHistDtls(pdfBean.getHawb(), userId, pdfBean.getCustomer(), pdfBean.getFileName(), pdfBean.getProduct(), pdfBean.getDocType(), "Print");
                msgDH.InsertLogDtls(pdfBean.getFileName(), pdfBean.getProduct(), pdfBean.getCustomer(), userId);
                FTPClient ftp = new FTPClient();
                int tiffPages = 0;
                try
                {
                    ftp.connect(ftpserver);
                } catch (SocketException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                } catch (IOException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                try
                {
                    boolean login = ftp.login(ftpusername, ftppassword);
                } catch (IOException e1)
                {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                int reply;
                reply = ftp.getReplyCode();
                if (!FTPReply.isPositiveCompletion(reply))
                {
                    ftp.disconnect();
                    System.out.println("FTP server refused connection.");
                } else
                {
                    // ftp.enterLocalPassiveMode();
                    ftp.enterLocalActiveMode();
                    ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
                    ftp.changeWorkingDirectory(pdfBean.getFileLocation());
                    /* FTPFile[] */
                    ftpFiles = ftp.listFiles();
                    /* FTPFile[] */// ftpFiles = ftp.listFiles();
                    // ftp.completePendingCommand();
                }
                String fileName = pdfBean.getFileLocation() + "/"
                        + pdfBean.getFileName();
                if ("/interface/oracle/dds/generic/hold/TIF"
                        .equalsIgnoreCase(pdfBean.getFileLocation()))
                {
                    int i = 0;
                    String F = pdfBean.getFileName().replaceAll(".PDF",
                            ".TIF");
                    // FTPFile[] ftpFiles =
                    // ftp.listFiles(pdfBean.getFileLocation());
                    for (FTPFile ftpFile : ftpFiles)
                    {
                        if (ftpFile.getName().equals(F))
                        {
                            fileName = pdfBean.getFileLocation()
                                    .concat("/").concat(F);
                            i = 1;
                        }
                    }
                    if (i == 0)
                    {
                        F = pdfBean.getFileName().replaceAll(".PDF",
                                ".TIFF");
                        for (FTPFile ftpFile : ftpFiles)
                        {
                            if (ftpFile.getName().equals(F))
                            {
                                fileName = pdfBean.getFileLocation()
                                        .concat("/").concat(F);
                                i = 1;
                            }
                        }
                    }
                    int Repcode = ftp.getReplyCode();
                    //
                    // System.out.println(Repcode);
                    /* if(fileName.endsWith(".TIF")) */
                    InputStream is = (InputStream) ftp.retrieveFileStream(fileName);
                    Repcode = ftp.getReplyCode();
                    System.out.println(Repcode);
                    // ftp.completePendingCommand();
                    Repcode = ftp.getReplyCode();
                    System.out.println(Repcode);
                    ra1 = new RandomAccessFileOrArray(is);
                    tiffPages = TiffImage.getNumberOfPages(ra1);
                    System.out.println("No of pages in image is : "
                            + tiffPages);
                    for (int a = 1; a <= tiffPages; a++)
                    {
                        try
                        {
                            Image img = TiffImage.getTiffImage(ra1, a);
                            if (img != null)
                            {
                                if (img.getScaledWidth() > 500
                                        || img.getScaledHeight() > 700)
                                {
                                    img.scaleToFit(800, 800);
                                }
                                doc.setPageSize(new Rectangle(img
                                        .getScaledWidth(), img
                                        .getScaledHeight()));
                                img.setAbsolutePosition(0, 0);
                                cb.addImage(img);
                                // doc.
                                doc.newPage();
                                // ++pages;
                            }
                        } catch (Throwable e)
                        {
                            System.out.println("Exception " + " page "
                                    + (a + 1) + " " + e.getMessage());
                        }
                    }
                    is.close();
                    ra1.close();
                }
                else{
                    InputStream pdf = ftp.retrieveFileStream(fileName);
                    if(pdf != null) {
                        PdfReader pdfRea = new PdfReader(pdf);
                        readers.add(pdfRea);
                        totalPages += pdfRea.getNumberOfPages();   
                    }

                    /*totalPages += pdfRea.getNumberOfPages();

                    PdfImportedPage page;
                    int currentPageNumber = 0;
                    int pageOfCurrentReaderPDF = 0;
                    Iterator<PdfReader> iteratorPDFReader = readers.iterator();
                    BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
                            BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                   // Loop through the PDF files and add to the output.
                   while (iteratorPDFReader.hasNext()) {
                       PdfReader pdfReader = iteratorPDFReader.next();
                       // Create a new page in the target for each source page.
                       while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
                           doc.newPage();
                           pageOfCurrentReaderPDF++;
                           currentPageNumber++;
                           page = write.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
                           cb.addTemplate(page, 0, 0);
                           // Code for pagination.
                           cb.beginText();
                           cb.setFontAndSize(bf, 9);
                           cb.showTextAligned(PdfContentByte.ALIGN_CENTER, ""
                                   + currentPageNumber + " of " + totalPages, 520, 5, 0);
                           cb.endText();
                       }
                       pageOfCurrentReaderPDF = 0;
                   }*/
                }
                ftp.logout();
                ftp.disconnect();
                ftp = null;
            }}

            PdfImportedPage page;
            int currentPageNumber = 0;
            int pageOfCurrentReaderPDF = 0;
            Iterator<PdfReader> iteratorPDFReader = readers.iterator();
            BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA,
                    BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
           // Loop through the PDF files and add to the output.
           while (iteratorPDFReader.hasNext()) {
               PdfReader pdfReader = iteratorPDFReader.next();
               // Create a new page in the target for each source page.
               while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
                   doc.newPage();
                   pageOfCurrentReaderPDF++;
                   currentPageNumber++;
                   page = write.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
                   cb.addTemplate(page, 0, 0);
                   // Code for pagination.
                   cb.beginText();
                   cb.setFontAndSize(bf, 9);
                   cb.showTextAligned(PdfContentByte.ALIGN_CENTER, ""
                           + currentPageNumber + " of " + totalPages, 520, 5, 0);
                   cb.endText();
               }
               pageOfCurrentReaderPDF = 0;
           }
        }
        doc.close();
        write.flush();
        write.close();
        System.out.println("done printing");
    }

    FileInputStream fiss = new FileInputStream(temp);  
    bis = new BufferedInputStream(fiss);
    response.reset();

相关内容

  • 没有找到相关文章

最新更新