iText Can you use PdfPTable with HtmlWriter

213 Views Asked by At

I am working on a legacy java web application. The application uses iText 2.0.1. They do not want to upgrade the version of iText so I have to continue using this one.

I need to output to either pdf or html. I am creating a PdfPTable. I create a second PdfPTable and add some PdfPCells. I add the second table to the first table.

The pdf output works great. The Html output is empty.

This is my test code.

public void createOutput(String outputType) {
    Document document = null;
    DocWriter docWriter = null;
    FileOutputStream outputFO = null;
    File pdfFile = new File("output.pdf");
    File htmlFile = new File("output.html");

    try {
        document = new Document(PageSize.LETTER.rotate(), 2, 2, 5, 2);


        if (outputType.equals("pdf")) {
            outputFO = new FileOutputStream(pdfFile);
            docWriter = PdfWriter.getInstance(document, outputFO);
            pdfContentByte = new PdfContentByte((PdfWriter) docWriter);
        }
        else {
            outputFO = new FileOutputStream(htmlFile);
            docWriter = HtmlWriter.getInstance(document, outputFO);
        }

        document.open();

        PdfPTable outputTable = new PdfPTable(1);
        PdfPTable innerTable = new PdfPTable(5);
        float widths[] = { 156f, 156f, 156f, 156f, 156f };

        outputTable.setTotalWidth(780);
        outputTable.setLockedWidth(true);

        innerTable.setTotalWidth(widths);
        innerTable.setLockedWidth(true);
        // Add some PdfPCell objects to the inner table.

        // Add inner table to output Table
        outputTable.addCell(innerTable);

        document.add(outputTable);
    }
    catch (Exception ex) {
        System.out.println(ex.getMessage());
    }
    finally {
        if (docWriter != null && !docWriter.isCloseStream()) {
            try {
                docWriter.close();
            }
            catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
        if (document != null && document.isOpen()) {
            try {
                document.close();
            }
            catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
            try {
                if (outputFO != null) {
                    outputFO.close();
                }
            }
            catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

This is the source of the html file:

<html>
  <head>
  <!-- iText 2.0.1 (by lowagie.com) -->
  <!-- CreationDate: Thu Sep 03 21:00:47 GMT 2015 -->
</head>
<body leftmargin="2.0" rightmargin="2.0" topmargin="5.0" bottommargin="2.0">
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
<div style="page-break-before: always; " />
  </body>
</html>
0

There are 0 best solutions below