How to save a html page in java

2

I have a project which I need to report for each code. And save it to disk in PDF format. After generating the report, I do not know how to pass the (generated) page to the Servlet and save it to PDF.

I was able to send the html to the servlet, now I need to know how to convert the tags (html) so that java can interpret them and transform into PDF.

Servlet

    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package br.com.drz.paraopeba.servlets;

    import com.itextpdf.text.Document;
    import com.itextpdf.text.html.simpleparser.HTMLWorker;
    import com.itextpdf.text.pdf.PdfWriter;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.io.StringReader;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    /**
     *
     * @author douglas
     */
    @WebServlet(name = "salvarPDF", urlPatterns = {"/salvarPDF"})
    public class salvarPDF extends HttpServlet {

        private static final String SAVE_DIR = "relatorios";

        /**
         * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
         * methods.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            try (PrintWriter out = response.getWriter()) {

            }
        }

        // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /**
         * Handles the HTTP <code>GET</code> method.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {



            processRequest(request, response);
        }

        /**
         * Handles the HTTP <code>POST</code> method.
         *
         * @param request servlet request
         * @param response servlet response
         * @throws ServletException if a servlet-specific error occurs
         * @throws IOException if an I/O error occurs
         */
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

            String  html = request.getParameter("conteudo");


            try {

                String appPath = request.getServletContext().getRealPath("");
                String savePath = appPath  + SAVE_DIR + File.separator;

                OutputStream file = new FileOutputStream(new File(savePath + "teste.pdf"));
                Document document = new Document();
                PdfWriter.getInstance(document, file);
                document.open();
                HTMLWorker htmlWorker = new HTMLWorker(document);
                htmlWorker.parse(new StringReader(html));
                document.close();
                file.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            processRequest(request, response);
        }


        /**
         * Returns a short description of the servlet.
         *
         * @return a String containing servlet description
         */
        @Override
        public String getServletInfo() {
            return "Short description";
        }// </editor-fold>

    }
    
asked by anonymous 15.01.2016 / 16:42

1 answer

1

An option for PDF generation would be to generate a report even using iReports or Jasper .

If this is not an option, you can venture into libraries that convert HTML to PDF, some cases here

I do not recommend using this type of library very much, since the generation of PDF is usually not very consistent. Each of these libraries interprets CSS in a different way, and in some cases, it does not interpret. The end result is usually rude and ugly.

If your HTML is simple enough, maybe you can minimize those problems.

    
15.01.2016 / 18:12