예제 #1
0
  // Write title of article to document
  private void writeTitle(String line) {
    Phrase ph;
    try {
      line = line.replaceAll("_", " ").toUpperCase();
      // header.setCurrentTitle(line);
      ph = _wikiFontSelector.getTitleFontSelector().process(line);
      ph.setLeading(10);
      Paragraph pr = new Paragraph(ph);
      // pr.setSpacingBefore(20);
      pr.setSpacingAfter(9);

      if (mct.isOverflow()) {
        mct.nextColumn();
        pdfDocument.newPage();
      }
      if (pdfWriter.getCurrentPageNumber() > 1) {
        mct.addElement(new Phrase("\n"));
      }

      mct.addElement(pr);
      pdfDocument.add(mct);
    } catch (Exception ex) {
      WikiLogger.getLogger().severe(currentTitle + " - Error: " + ex.getMessage());
    }
  }
예제 #2
0
 /**
  * Process the text so that it will render with a combination of fonts if needed.
  *
  * @param text the text
  * @return a <CODE>Phrase</CODE> with one or more chunks
  */
 public Phrase process(String text) {
   int fsize = fonts.size();
   if (fsize == 0) throw new IndexOutOfBoundsException("No font is defined.");
   char cc[] = text.toCharArray();
   int len = cc.length;
   StringBuffer sb = new StringBuffer();
   Font font = null;
   int lastidx = -1;
   Phrase ret = new Phrase();
   for (int k = 0; k < len; ++k) {
     char c = cc[k];
     if (c == '\n' || c == '\r') {
       sb.append(c);
       continue;
     }
     if (Utilities.isSurrogatePair(cc, k)) {
       int u = Utilities.convertToUtf32(cc, k);
       for (int f = 0; f < fsize; ++f) {
         font = (Font) fonts.get(f);
         if (font.getBaseFont().charExists(u)) {
           if (lastidx != f) {
             if (sb.length() > 0 && lastidx != -1) {
               Chunk ck = new Chunk(sb.toString(), (Font) fonts.get(lastidx));
               ret.add(ck);
               sb.setLength(0);
             }
             lastidx = f;
           }
           sb.append(c);
           sb.append(cc[++k]);
           break;
         }
       }
     } else {
       for (int f = 0; f < fsize; ++f) {
         font = (Font) fonts.get(f);
         if (font.getBaseFont().charExists(c)) {
           if (lastidx != f) {
             if (sb.length() > 0 && lastidx != -1) {
               Chunk ck = new Chunk(sb.toString(), (Font) fonts.get(lastidx));
               ret.add(ck);
               sb.setLength(0);
             }
             lastidx = f;
           }
           sb.append(c);
           break;
         }
       }
     }
   }
   if (sb.length() > 0) {
     Chunk ck = new Chunk(sb.toString(), (Font) fonts.get(lastidx == -1 ? 0 : lastidx));
     ret.add(ck);
   }
   return ret;
 }
예제 #3
0
 private void encodeNameAndConditionDefined(
     SheetGraphics graphics, VirtueFlawContent content, Bounds textBounds)
     throws DocumentException {
   Phrase phrase = new Phrase();
   phrase.add(new Chunk(content.getVirtueFlawName() + ": ", createNameFont(graphics)));
   phrase.add(new Chunk(content.getLimitBreakCondition(), createConditionFont(graphics)));
   graphics
       .createSimpleColumn(textBounds)
       .withLeading(REDUCED_LINE_HEIGHT)
       .andTextPart(phrase)
       .encode();
 }
예제 #4
0
 private void encodeOnlyNameDefined(
     SheetGraphics graphics, Bounds bounds, VirtueFlawContent content, Bounds textBounds)
     throws DocumentException {
   Phrase phrase = new Phrase();
   phrase.add(new Chunk(content.getVirtueFlawName(), createNameFont(graphics)));
   float baseLine =
       graphics
           .createSimpleColumn(textBounds)
           .withLeading(REDUCED_LINE_HEIGHT)
           .andTextPart(phrase)
           .encode()
           .getYLine();
   encodeLines(graphics, bounds, REDUCED_LINE_HEIGHT, baseLine);
 }
예제 #5
0
 private void encodeOnlyConditionDefined(
     SheetGraphics graphics, VirtueFlawContent content, Bounds textBounds)
     throws DocumentException {
   Phrase phrase = new Phrase();
   Font undefinedFont = new Font(createNameFont(graphics));
   undefinedFont.setStyle(Font.UNDERLINE);
   phrase.add(
       new Chunk("                                          : ", undefinedFont)); // $NON-NLS-1$
   phrase.add(new Chunk(": ", createNameFont(graphics))); // $NON-NLS-1$
   phrase.add(new Chunk(content.getLimitBreakCondition(), createConditionFont(graphics)));
   graphics
       .createSimpleColumn(textBounds)
       .withLeading(REDUCED_LINE_HEIGHT)
       .andTextPart(phrase)
       .encode();
 }
 public void encode(
     PdfContentByte directContent,
     IGenericCharacter character,
     IGenericDescription description,
     Bounds bounds)
     throws DocumentException {
   IVirtueFlaw resonance =
       ((IVirtueFlawModel) character.getAdditionalModel(AbyssalResonanceTemplate.ID))
           .getVirtueFlaw();
   Bounds textBounds =
       traitEncoder.encode(directContent, bounds, resonance.getLimitTrait().getCurrentValue());
   Font font = createFont(getBaseFont());
   Font nameFont = createNameFont(getBaseFont());
   Phrase phrase = new Phrase("", font); // $NON-NLS-1$
   phrase.add(
       new Chunk(
           resources.getString("Sheet.GreatCurse.FlawedVirtue") + ": ",
           nameFont)); //$NON-NLS-1$ //$NON-NLS-2$
   if (resonance.isFlawComplete()) {
     phrase.add(resonance.getRoot().getId() + ".\n");
   } else {
     Font undefinedFont = new Font(font);
     undefinedFont.setStyle(Font.UNDERLINE);
     phrase.add(
         new Chunk("                                          ", undefinedFont)); // $NON-NLS-1$
     phrase.add(".\n");
   }
   phrase.add(resources.getString("Sheet.GreatCurse.ResonanceReference")); // $NON-NLS-1$
   encodeTextWithReducedLineHeight(directContent, textBounds, phrase);
 }
예제 #7
0
  public ByteArrayOutputStream create(Info in, Image toplogo) throws Exception {
    DocHelper dh = new DocHelper();
    Document document = new Document(PageSize.LETTER);
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    PdfWriter writer = PdfWriter.getInstance(document, baos);
    writer.setEncryption(
        PdfWriter.STRENGTH128BITS, "", "3p(0pdf", PdfWriter.AllowCopy | PdfWriter.AllowPrinting);
    // when creating based off this document, cut out from here---------------------

    contract.next();
    float amount = contract.getFloat("amount");
    String job_name = contract.getString("job_name");
    String company = contract.getString("company_name");
    String costCode = contract.getString("division") + " " + contract.getString("cost_code");
    String phaseCode = contract.getString("phase_code");

    float change_order_num = 0;
    int sub_co_number = 0;
    String item_number = "0";
    String co_desc, subject, status;
    float unit_amount = 0, unit_quantity = 0, net_cost = 0;
    float total = 0;
    DecimalFormat df = new DecimalFormat("$###,###,##0.00");
    DecimalFormat codf = new DecimalFormat("0.##");
    SimpleDateFormat sdf = new SimpleDateFormat("MMMM d, yyyy");

    // blank spacer for keeping tables apart
    PdfPTable spacer = new PdfPTable(1);
    /*
    spacer.setBorderWidth(0);
    spacer.setDefaultCellBorderWidth(0);
    spacer.setWidth(100);
    spacer.setPadding(0);
    spacer.setSpacing(0);
    */
    PdfPCell blank =
        new PdfPCell(
            new Phrase("", new Font(Font.TIMES_ROMAN, 1, Font.BOLD, new Color(255, 255, 255))));
    blank.setBorderWidth(0);
    // blank.setLeading(0);
    spacer.addCell(blank);

    // start of document
    Phrase p1 =
        new Phrase(
            "Printed: " + sdf.format(new java.util.Date()),
            new Font(Font.TIMES_ROMAN, 8, Font.ITALIC));
    HeaderFooter footer = new HeaderFooter(p1, false);
    footer.setAlignment(Element.ALIGN_CENTER);
    footer.setBorder(Rectangle.NO_BORDER);
    document.setFooter(footer);
    document.open();

    Image blank1_0 = Image.getInstance(in.path + "/jsp/images/blank1_0.jpg");
    blank1_0.scalePercent(60);
    toplogo.scalePercent(20);

    /*
    Table table1=new Table(1,1);
    table1.setBorderWidth(0);
    table1.setDefaultCellBorder(0);
    table1.setPadding(3);
    */

    PdfPTable table1 = new PdfPTable(2);
    // t.setBorder(0);
    // t.setDefaultPdfPCellBorder(0);
    table1.setWidthPercentage(100);

    PdfPCell cell = new PdfPCell(toplogo);
    dh.top(cell);
    cell.setPaddingBottom(4);
    cell.setBorder(0);
    table1.addCell(cell);

    Phrase name = new Phrase(job_name + "\n", dh.font(16));
    name.add(new Phrase("Subcontract CO Report", dh.font(14)));
    cell = new PdfPCell(name);
    dh.middle(cell);
    dh.center(cell);
    cell.setBorder(0);
    table1.addCell(cell);

    document.add(table1);

    table1 = new PdfPTable(1);
    table1.setWidthPercentage(100);

    p1 = new Phrase(costCode + "-" + phaseCode + ": " + company, dh.font(16, Font.BOLD));
    cell = new PdfPCell(p1);
    cell.setUseDescender(true);
    dh.center(cell);
    dh.middle(cell);
    dh.gray(cell);
    cell.setBorder(0);
    table1.addCell(cell);
    document.add(table1);
    document.add(spacer);

    // header cells
    table1 = new PdfPTable(5);
    int[] widths1 = {5, 5, 57, 15, 15};
    table1.setWidths(widths1);
    table1.setWidthPercentage(100);

    // data cells
    float grand_total = 0;
    while (item.next()) {
      change_order_num = item.getFloat("change_order_num");
      sub_co_number = item.getInt("sub_co_number");
      co_desc = item.getString("description");
      if (co_desc == null) co_desc = "";
      item_number = item.getString("item_number");
      subject = item.getString("subject");
      if (subject == null) subject = "";
      unit_amount = item.getFloat("unit_amount");
      unit_quantity = item.getFloat("unit_quantity");
      status = item.getString("status");
      // bonds_and_insurance = item.getFloat("bonds_and_insurance");
      // item_tax = item.getFloat("item_tax");
      // epco_markup = item.getFloat("epco_markup");

      net_cost = (unit_amount * unit_quantity);
      if (status.equals("Approved")) {
        total += net_cost;
        grand_total += net_cost;
      }

      // first row
      table1.addCell(blank);

      if (change_order_num == -1) co_desc = "Backcharge";
      if (change_order_num == 0) co_desc = "";
      p1 = new Phrase(Integer.toString(sub_co_number), new Font(Font.TIMES_ROMAN, 8, Font.NORMAL));
      cell = new PdfPCell(p1);
      dh.top(cell);
      cell.setBackgroundColor(new Color(225, 225, 225));
      cell.setBorder(0);
      table1.addCell(cell);

      cell = new PdfPCell(new Phrase(co_desc, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
      cell.setColspan(2);
      dh.top(cell);
      cell.setBackgroundColor(new Color(225, 225, 225));
      cell.setBorder(0);
      table1.addCell(cell);

      cell =
          new PdfPCell(
              new Phrase(
                  "CO# " + codf.format(change_order_num) + "-" + item_number,
                  new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
      dh.top(cell);
      dh.right(cell);
      cell.setBackgroundColor(new Color(225, 225, 225));
      cell.setBorder(0);
      table1.addCell(cell);

      table1.addCell(blank);
      table1.addCell(blank);

      cell = new PdfPCell(new Phrase(subject, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
      dh.top(cell);
      cell.setBorder(0);
      table1.addCell(cell);

      cell =
          new PdfPCell(new Phrase(df.format(net_cost), new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
      dh.right(cell);
      dh.top(cell);
      cell.setBorder(0);
      table1.addCell(cell);

      cell = new PdfPCell(new Phrase(status, new Font(Font.TIMES_ROMAN, 8, Font.NORMAL)));
      dh.right(cell);
      dh.top(cell);
      cell.setBorder(0);
      table1.addCell(cell);
    } // end while
    // Spit out final total row

    document.add(table1);
    document.add(spacer);

    table1 = new PdfPTable(3);
    int[] widths2 = {72, 15, 12};
    table1.setWidths(widths2);
    cell =
        new PdfPCell(
            new Phrase(
                "Total Approved Change Orders:", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    dh.right(cell);
    dh.middle(cell);
    cell.setBorder(0);
    table1.addCell(cell);

    cell =
        new PdfPCell(
            new Phrase(df.format(grand_total), new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    dh.right(cell);
    dh.middle(cell);
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);

    cell =
        new PdfPCell(
            new Phrase("Original Contract Amount:", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    dh.right(cell);
    dh.middle(cell);
    cell.setBorder(0);
    table1.addCell(cell);

    cell = new PdfPCell(new Phrase(df.format(amount), new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    dh.right(cell);
    dh.middle(cell);
    cell.setBorder(0);
    table1.addCell(cell);

    table1.addCell(blank);

    cell =
        new PdfPCell(
            new Phrase("Current Approved Total:", new Font(Font.TIMES_ROMAN, 10, Font.NORMAL)));
    dh.right(cell);
    dh.middle(cell);
    cell.setBorder(0);
    table1.addCell(cell);

    grand_total += amount;
    cell =
        new PdfPCell(new Phrase(df.format(grand_total), new Font(Font.TIMES_ROMAN, 10, Font.BOLD)));
    dh.right(cell);
    dh.middle(cell);
    cell.setBorder(0);
    table1.addCell(cell);
    table1.addCell(blank);
    document.add(table1);

    if (contract != null) contract.getStatement().close();
    contract = null;
    if (item != null) item.getStatement().close();
    item = null;
    // -----------------------to here--------------------

    document.close();
    return baos;
  }
예제 #8
0
  public void generatePdf(
      UserShopForm sForm,
      List pItems,
      StoreData pStore,
      OutputStream pOut,
      String pImageName,
      boolean personal,
      boolean pCatalogOnly,
      String catalogLocaleCd)
      throws IOException {
    mSkuTag = ClwI18nUtil.getMessage(mRequest, "shop.og.text.ourSkuNum", null);

    try {
      catalogOnly = pCatalogOnly;
      initColumnsAdnWidths(sForm.getAppUser());
      mSiteData = sForm.getAppUser().getSite();
      AccountData mAccount = sForm.getAppUser().getUserAccount();
      String ogInvDisplay =
          mAccount.getPropertyValue(RefCodeNames.PROPERTY_TYPE_CD.INVENTORY_OG_LIST_UI);
      boolean modernShoppingFl = mSiteData.hasModernInventoryShopping();
      // loop through the items to check if the footer needs to have the pack
      // Disclaimer printed on each page.
      boolean printProblemPackDisclaimer = false,
          invItems = false,
          invAutoOrderItems = false,
          nonInvItems = false,
          addNewPage = false;

      for (int i = 0; i < pItems.size(); i++) {
        ShoppingCartItemData sci = (ShoppingCartItemData) pItems.get(i);
        if (sci.getProduct().isPackProblemSku()) {
          printProblemPackDisclaimer = true;
        }
        if (sci.getIsaInventoryItem()) {
          invItems = true;
          if (null != mSiteData
              && mSiteData.isAnInventoryAutoOrderItem(sci.getProduct().getProductId())) {
            invAutoOrderItems = true;
          }

        } else {
          nonInvItems = true;
          if (invItems) addNewPage = true;
        }
      }

      Phrase headPhrase = new Phrase(makeChunk("", heading, true));
      if (catalogOnly) {
        String catalogStr = ClwI18nUtil.getMessage(mRequest, "shop.og.text.catalog", null);
        headPhrase.add(makeChunk(catalogStr, heading, true));
      } else {
        if (sForm.getAppUser().getSite() != null
            && sForm.getAppUser().getSite().getBSC() != null
            && sForm.getAppUser().getSite().getBSC().getBusEntityData() != null
            && sForm.getAppUser().getSite().getBSC().getBusEntityData().getShortDesc() != null) {
          String subname =
              sForm.getAppUser().getSite().getBSC().getBusEntityData().getShortDesc() + " ";
          headPhrase.add(makeChunk(subname, heading, true));
          headPhrase.add(makeChunk(" ", heading, true));
        }
        String orderGuideStr = ClwI18nUtil.getMessage(mRequest, "shop.og.text.orderGuide", null);
        headPhrase.add(makeChunk(orderGuideStr, heading, true));
        headPhrase.add(makeChunk(" ", heading, true));
        headPhrase.add(
            makeChunk(
                sForm.getAppUser().getUserAccount().getBusEntity().getShortDesc(), heading, true));
      }
      HeaderFooter header = new HeaderFooter(headPhrase, true);
      header.setAlignment(HeaderFooter.ALIGN_RIGHT);

      // setup the document
      // pageSize,  marginLeft, marginRight,  marginTop, marginBottom
      Document document = new Document(PageSize.A4, 10, 15, 30, 15);
      PdfWriter writer = PdfWriter.getInstance(document, pOut);

      String addr =
          pStore.getPrimaryAddress().getAddress1() + " " + pStore.getPrimaryAddress().getAddress2();
      Chunk disclaimer = null;
      String fmsg = "";
      if (invItems) {
        fmsg += ClwI18nUtil.getMessage(mRequest, "shop.og.text.i-inventoryItem", null) + " ";
      }
      if (invAutoOrderItems) {
        fmsg += ClwI18nUtil.getMessage(mRequest, "shop.og.text.a-autoOrderItem", null) + " ";
      }
      if (printProblemPackDisclaimer) {
        fmsg +=
            ClwI18nUtil.getMessage(mRequest, "shop.og.text.*packAndOrUomMayDifferByRegion", null);
      }
      if (fmsg.length() > 0) {
        disclaimer = makeChunk(fmsg, smallItalic, true);
      }

      Phrase footPhrase = makeStoreFooter(pStore, disclaimer, null);

      HeaderFooter footer = new HeaderFooter(footPhrase, false);
      footer.setAlignment(HeaderFooter.ALIGN_CENTER);

      // setup the borders from the header
      header.setBorder(borderType);
      footer.setBorder(HeaderFooter.TOP);

      document.setHeader(header);
      document.setFooter(footer);
      document.open();

      // voc message
      String vocMessage = ClwI18nUtil.getMessage(mRequest, "shop.message.vocNotIncluded", null);
      document.add(makePhrase(vocMessage, smallHeading, true));
      document.add(makePhrase(null, smallHeading, true));

      drawOGHeader(document, sForm, pImageName, personal);
      if (modernShoppingFl && !"SEPARATED LIST".equals(ogInvDisplay)) {
        drawHeader(
            document, pageNumber, pStore.getStoreBusinessName().getValue(), pImageName, true);

        String prevCat = null;
        for (int i = 0; i < pItems.size(); i++) {
          ShoppingCartItemData sci = (ShoppingCartItemData) pItems.get(i);
          Table itmTable = makeItemElement(sci);

          // if the item data will not fit onto the page,
          // make a new page, and redraw the header.

          if (writer.fitsPage(itmTable, document.bottomMargin() + 10)) {
            if (sForm.getOrderBy() == Constants.ORDER_BY_CATEGORY) {
              if (null == prevCat || !prevCat.equals(sci.getCategoryPath())) {
                document.add(makePhrase(sci.getCategoryPath(), smallHeading, true));
                document.add(makePhrase(null, smallHeading, true));
              }
              prevCat = sci.getCategoryPath();
            }
          }

          if (!writer.fitsPage(itmTable, document.bottomMargin() + 10)) {
            document.newPage();
            pageNumber = pageNumber + 1;
            drawHeader(
                document, pageNumber, pStore.getStoreBusinessName().getValue(), pImageName, true);
            if (sForm.getOrderBy() == Constants.ORDER_BY_CATEGORY) {
              document.add(makePhrase(sci.getCategoryPath(), smallHeading, true));
              document.add(makePhrase(null, smallHeading, true));
              prevCat = sci.getCategoryPath();
            }
          }
          document.add(itmTable);
        }

      } else {
        if (invItems) {
          drawHeader(
              document, pageNumber, pStore.getStoreBusinessName().getValue(), pImageName, true);

          String prevCat = null;
          for (int i = 0; i < pItems.size(); i++) {
            ShoppingCartItemData sci = (ShoppingCartItemData) pItems.get(i);
            if (sci.getIsaInventoryItem() == false) {
              continue;
            }
            if (sci.getInventoryParValuesSum() <= 0) {
              // This is an inventory item that is not
              // allowed for this location.
              continue;
            }
            Table itmTable = makeItemElement(sci);

            // if the item data will not fit onto the page,
            // make a new page, and redraw the header.

            if (writer.fitsPage(itmTable, document.bottomMargin() + 10)) {
              if (sForm.getOrderBy() == Constants.ORDER_BY_CATEGORY) {
                if (null == prevCat || !prevCat.equals(sci.getCategoryPath())) {
                  document.add(makePhrase(sci.getCategoryPath(), smallHeading, true));
                  document.add(makePhrase(null, smallHeading, true));
                }
                prevCat = sci.getCategoryPath();
              }
            }

            if (!writer.fitsPage(itmTable, document.bottomMargin() + 10)) {
              document.newPage();
              pageNumber = pageNumber + 1;
              drawHeader(
                  document, pageNumber, pStore.getStoreBusinessName().getValue(), pImageName, true);
              if (sForm.getOrderBy() == Constants.ORDER_BY_CATEGORY) {
                document.add(makePhrase(sci.getCategoryPath(), smallHeading, true));
                document.add(makePhrase(null, smallHeading, true));
                prevCat = sci.getCategoryPath();
              }
            }
            document.add(itmTable);
          }
        }

        if (nonInvItems) {

          if (addNewPage) {
            document.newPage();
            pageNumber = pageNumber + 1;
          }

          drawHeader(
              document, pageNumber, pStore.getStoreBusinessName().getValue(), pImageName, false);
          document.add(makeBlankLine());

          String prevCat = null;
          for (int i = 0; i < pItems.size(); i++) {
            ShoppingCartItemData sci = (ShoppingCartItemData) pItems.get(i);
            if (sci.getIsaInventoryItem()) {
              continue;
            }

            Table itmTable = makeItemElement(sci);

            // Check to see if the category needs to be put out.
            if (writer.fitsPage(itmTable, document.bottomMargin() + 10)) {
              if (sForm.getOrderBy() == Constants.ORDER_BY_CATEGORY) {
                if (null == prevCat || !prevCat.equals(sci.getCategoryPath())) {
                  document.add(makePhrase(sci.getCategoryPath(), smallHeading, true));
                  document.add(makePhrase(null, smallHeading, true));
                }
                prevCat = sci.getCategoryPath();
              }
            }

            // if the item data will not fit onto the page,
            // make a new page, and redraw the header.

            if (!writer.fitsPage(itmTable, document.bottomMargin() + 10)) {
              document.newPage();
              pageNumber = pageNumber + 1;
              drawHeader(
                  document,
                  pageNumber,
                  pStore.getStoreBusinessName().getValue(),
                  pImageName,
                  false);
              if (sForm.getOrderBy() == Constants.ORDER_BY_CATEGORY) {
                document.add(makePhrase(sci.getCategoryPath(), smallHeading, true));
                document.add(makePhrase(null, smallHeading, true));
                prevCat = sci.getCategoryPath();
              }
            }
            document.add(itmTable);
          }
        }
      }

      // close out the document
      document.close();
    } catch (DocumentException e) {
      e.printStackTrace();
      throw new IOException(e.getMessage());
    }
  }