@Override
  protected void buildPdfDocument(
      Map<String, Object> model,
      Document doc,
      PdfWriter writer,
      HttpServletRequest request,
      HttpServletResponse response)
      throws Exception {
    // TODO Auto-generated method stub

    @SuppressWarnings("unchecked")
    ArrayList<ctUsuario> listaUsuario = (ArrayList<ctUsuario>) model.get("listaUsuario");
    // grupo = (String)model.get("grupo");

    PdfPTable tablaPDF = new PdfPTable(11); // 11 columns.
    Font fuenteTabla = new Font(Font.FontFamily.UNDEFINED, 12, Font.BOLD);
    Font fuenteCelda = new Font(Font.FontFamily.UNDEFINED, 11);

    tablaPDF.addCell(new Phrase("Nombre", fuenteTabla));
    tablaPDF.addCell(new Phrase("Apellido", fuenteTabla));
    tablaPDF.addCell(new Phrase("Fecha De Nacimiento", fuenteTabla));
    tablaPDF.addCell(new Phrase("Calle", fuenteTabla));
    tablaPDF.addCell(new Phrase("Num. Ext", fuenteTabla));
    tablaPDF.addCell(new Phrase("Num. Int", fuenteTabla));
    tablaPDF.addCell(new Phrase("Colonia", fuenteTabla));
    tablaPDF.addCell(new Phrase("CP", fuenteTabla));
    tablaPDF.addCell(new Phrase("Municipio", fuenteTabla));
    tablaPDF.addCell(new Phrase("Estado", fuenteTabla));
    tablaPDF.addCell(new Phrase("Telefono", fuenteTabla));

    for (ctUsuario ctUsuario : listaUsuario) {
      tablaPDF.addCell(new Phrase(ctUsuario.getcNombre(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getcApellidos(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getDtFechaNac(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getcCalle(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getcNumExterior(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getcNumInterior(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getcColonia(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getcCP(), fuenteCelda));
      // tablaPDF.addCell(new Phrase(ctUsuario.getcMunicipio(), fuenteCelda));
      tablaPDF.addCell(new Phrase(ctUsuario.getcEstado(), fuenteCelda));
      // tablaPDF.addCell(new Phrase(ctUsuario.getcTel(), fuenteCelda));
    }

    tablaPDF.setWidthPercentage(100);
    Rectangle rect = new Rectangle(60, 30, 600, 800);
    writer.setBoxSize("art", rect);
    HeaderFooterPageEvent event = new HeaderFooterPageEvent();
    writer.setPageEvent(event);
    doc.setPageSize(PageSize.A4.rotate());
    doc.open();
    doc.add(tablaPDF);
    doc.close();
    pages = 0;
  }
Пример #2
0
  private static PdfReader createPdf(
      String globalTitle, Date creationDate, ScrambleRequest scrambleRequest)
      throws DocumentException, IOException {
    azzert(scrambleRequest.scrambles.length > 0);
    ByteArrayOutputStream pdfOut = new ByteArrayOutputStream();
    Rectangle pageSize = PageSize.LETTER;
    Document doc = new Document(pageSize, 0, 0, 75, 75);
    PdfWriter docWriter = PdfWriter.getInstance(doc, pdfOut);

    docWriter.setBoxSize(
        "art", new Rectangle(36, 54, pageSize.getWidth() - 36, pageSize.getHeight() - 54));

    doc.addCreationDate();
    doc.addProducer();
    if (globalTitle != null) {
      doc.addTitle(globalTitle);
    }

    doc.open();
    // Note that we ignore scrambleRequest.copies here.
    addScrambles(docWriter, doc, scrambleRequest, globalTitle);
    doc.close();

    // TODO - is there a better way to convert from a PdfWriter to a PdfReader?
    PdfReader pr = new PdfReader(pdfOut.toByteArray());
    if (scrambleRequest.fmc) {
      // We don't watermark the FMC sheets because they already have
      // the competition name on them.
      return pr;
    }

    pdfOut = new ByteArrayOutputStream();
    doc = new Document(pageSize, 0, 0, 75, 75);
    docWriter = PdfWriter.getInstance(doc, pdfOut);
    doc.open();

    PdfContentByte cb = docWriter.getDirectContent();

    for (int pageN = 1; pageN <= pr.getNumberOfPages(); pageN++) {
      PdfImportedPage page = docWriter.getImportedPage(pr, pageN);

      doc.newPage();
      cb.addTemplate(page, 0, 0);

      Rectangle rect = pr.getBoxSize(pageN, "art");

      // Header
      ColumnText.showTextAligned(
          cb,
          Element.ALIGN_LEFT,
          new Phrase(Utils.SDF.format(creationDate)),
          rect.getLeft(),
          rect.getTop(),
          0);

      ColumnText.showTextAligned(
          cb,
          Element.ALIGN_CENTER,
          new Phrase(globalTitle),
          (pageSize.getLeft() + pageSize.getRight()) / 2,
          pageSize.getTop() - 60,
          0);

      ColumnText.showTextAligned(
          cb,
          Element.ALIGN_CENTER,
          new Phrase(scrambleRequest.title),
          (pageSize.getLeft() + pageSize.getRight()) / 2,
          pageSize.getTop() - 45,
          0);

      if (pr.getNumberOfPages() > 1) {
        ColumnText.showTextAligned(
            cb,
            Element.ALIGN_RIGHT,
            new Phrase(pageN + "/" + pr.getNumberOfPages()),
            rect.getRight(),
            rect.getTop(),
            0);
      }

      // Footer
      String generatedBy = "Generated by " + Utils.getProjectName() + "-" + Utils.getVersion();
      ColumnText.showTextAligned(
          cb,
          Element.ALIGN_CENTER,
          new Phrase(generatedBy),
          (pageSize.getLeft() + pageSize.getRight()) / 2,
          pageSize.getBottom() + 40,
          0);
    }

    doc.close();

    // TODO - is there a better way to convert from a PdfWriter to a PdfReader?
    pr = new PdfReader(pdfOut.toByteArray());
    return pr;

    //      The PdfStamper class doesn't seem to be working.
    //      pdfOut = new ByteArrayOutputStream();
    //      PdfStamper ps = new PdfStamper(pr, pdfOut);
    //
    //      for(int pageN = 1; pageN <= pr.getNumberOfPages(); pageN++) {
    //          PdfContentByte pb = ps.getUnderContent(pageN);
    //          Rectangle rect = pr.getBoxSize(pageN, "art");
    //          System.out.println(rect.getLeft());
    //          System.out.println(rect.getWidth());
    //          ColumnText.showTextAligned(pb,
    //                  Element.ALIGN_LEFT, new Phrase("Hello people!"), 36, 540, 0);
    ////            ColumnText.showTextAligned(pb,
    ////                    Element.ALIGN_CENTER, new Phrase("HELLO WORLD"),
    ////                    (rect.getLeft() + rect.getRight()) / 2, rect.getTop(), 0);
    //      }
    //      ps.close();
    //      return ps.getReader();
  }