2011-11-21 24 views
1

私は動的にPDFを生成するクラスを持っています。 は4〜6列です。 2番目の列の説明には、アイテムの名前が動的に表示されます。 約20-40文字..今、私は一貫して行の高さを表示したい。 説明文字のいずれかが30文字を超えている場合は、文字高さが30を超えていない場合、等高線(20f)としてすべての行の高さを表示する必要があります 私はすべての行の高さを(10f)として表示する必要があります。iText PDF動的生成

どうすれば同じものを動的に整列できますか?

mainTable.addCell (PDFUtil.getBlankLine (20f)); 
float[] colsWidth = {0.5f,3.8f,0.9f,0.9f,1.3f,0.9f,1.3f,1.4f}; 
PdfPTable itemListTab = new PdfPTable(colsWidth); 

PdfPCell slNo = PDFUtil.getTableHeaderCell(PDFUtil.S_NO, 
     PDFUtil.getBoldFont()); 
PdfPCell itmDesc = PDFUtil.getTableHeaderCell(PDFUtil.ITEM_DESC, 
     PDFUtil.getBoldFont()); 
PdfPCell loose = PDFUtil.getTableHeaderCell(PDFUtil.LOOSE_QTY, 
     PDFUtil.getBoldFont()); 
PdfPCell full = PDFUtil.getTableHeaderCell(PDFUtil.FULL_QTY, 
     PDFUtil.getBoldFont()); 
PdfPCell unitPrc = PDFUtil.getTableHeaderCell(PDFUtil.QUOTED_PRICE, 
     PDFUtil.getBoldFont()); 
PdfPCell disc = PDFUtil.getTableHeaderCell(
     PDFUtil.ITM_DISCOUNT_PERCENT, PDFUtil.getBoldFont()); 
PdfPCell netAmt = PDFUtil.getTableHeaderCell(PDFUtil.NET_PRICE, 
     PDFUtil.getBoldFont()); 
PdfPCell amt = PDFUtil.getTableHeaderCell(PDFUtil.AMOUNT_LABEL, PDFUtil 
     .getBoldFont()); 
amt.setHorizontalAlignment(Element.ALIGN_RIGHT); 
itemListTab.addCell(slNo); 
itemListTab.addCell(itmDesc); 
itemListTab.addCell(full); 
itemListTab.addCell(loose); 
itemListTab.addCell(unitPrc); 
itemListTab.addCell(disc); 
itemListTab.addCell(netAmt); 
itemListTab.addCell(amt); 
ArrayList aList = vendPOVO.getItemList(); 
if (aList != null) 
{ 
    Object[] iList = aList.toArray(); 
    Arrays.sort(iList, new ItemSNoComparator(aList)); 
    int len = iList.length; 
    InventoryLogger.logDebug("After sorting the item list by SNo"); 
    InventoryLogger.logDebug("length"+len); 
    for (int i = 0; i < len; i++) 
    { 
     InventoryLogger.logDebug("inside for"); 
     ItemMasterVO itmMstrVO = (ItemMasterVO) iList[i]; 
     if (InventoryConstants.TRUE.equals(itmMstrVO 
      .getVendPurOrdInd())) 
     { 
      String ctry = " "; 
      InventoryLogger.logDebug ("Country of origin"+itmMstrVO.getCtryOfOrigin()); 
      if(itmMstrVO.getCtryOfOrigin() != null) 
      { 
       ctry = InventoryUtil.getStaticElementDescription(
         itmMstrVO.getCtryOfOrigin(),InventoryConstants.STATIC_ELE_CTRY); 
      } 
      String uomDesc = ""; 
      String looseUomTemp = ""; 
      if(itmMstrVO.getUomDesc().matches(InventoryConstants.UOM_KGGM)) 
      { 
       uomDesc = "1 KG "; 
       looseUomTemp = "KG"; 
      } 
      else 
      { 
       uomDesc = itmMstrVO.getUomDesc(); 
       looseUomTemp = itmMstrVO.getLooseUOM(); 
      } 
      String flFlagCheck = ""; 
      InventoryLogger.logDebug("fl"+itmMstrVO.getFullLooseInd()); 
      if(itmMstrVO.getFullLooseInd().matches(InventoryConstants.FULL_LOOSE_IND_F)) 
      { 
       flFlagCheck = itmMstrVO.getFullUOM(); 
      } 
      else 
      { 
       flFlagCheck = itmMstrVO.getLooseUOM(); 
      } 

      itemListTab.addCell(new PdfPCell(new Phrase(itmMstrVO 
       .getCusQuoSerialNo(), PDFUtil 
       .getNormalFont()))); 

      itemListTab.addCell(new PdfPCell(new Phrase(itmMstrVO 
       .getItemDisplayName()+ "/" + uomDesc + "/" + ctry , PDFUtil 
       .getNormalFont()))); 

      itemListTab.addCell(new PdfPCell(new Phrase(Long 
       .toString(itmMstrVO.getQuoFull())+" "+itmMstrVO.getFullUOM(), PDFUtil 
       .getNormalFont()))); 
      PdfPCell cellone = new PdfPCell(new Phrase(Long.toString(itmMstrVO.getQuoLoose())+" "+itmMstrVO.getLooseUOM(), PDFUtil.getNormalFont())); 
      cellone.setFixedHeight(25f); 
      itemListTab.addCell(cellone);itemListTab.addCell(new PdfPCell(new Phrase(InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getDiscUnitPrice())+"/"+flFlagCheck, PDFUtil 
       .getNormalFont()))); 

      itemListTab.addCell(new PdfPCell(new Phrase(InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getDiscPercent()), PDFUtil 
       .getNormalFont()))); 
      itemListTab.addCell(new PdfPCell(new Phrase((InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getDiscUnitPrice()))+"/" +flFlagCheck, PDFUtil.getNormalFont()))); 
      itemListTab.addCell(new PdfPCell(new Phrase(InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getAmount()), PDFUtil 
       .getNormalFont()))); 
     } 
    } 
} 
PdfPCell addCell = new PdfPCell(itemListTab); 
addCell.setBorder(0); 
mainTable.addCell(addCell); 

答えて

0

はちょっとGuysは最終的に私はこのために解決策を見つけた:私はラインの長さのチェックと高さを固定するためのいくつかの計算を導入している

mainTable.addCell(PDFUtil.getBlankLine(20f)); 
    float[] colsWidth = {0.5f,3.8f,0.9f,0.9f,1.3f,0.9f,1.3f,1.4f}; 
    PdfPTable itemListTab = new PdfPTable(colsWidth); 

    PdfPCell slNo = PDFUtil.getTableHeaderCell(PDFUtil.S_NO, 
     PDFUtil.getBoldFont()); 

    PdfPCell itmDesc = PDFUtil.getTableHeaderCell(PDFUtil.ITEM_DESC, 
     PDFUtil.getBoldFont()); 

    PdfPCell loose = PDFUtil.getTableHeaderCell(PDFUtil.LOOSE_QTY, 
     PDFUtil.getBoldFont()); 
    PdfPCell full = PDFUtil.getTableHeaderCell(PDFUtil.FULL_QTY, 
     PDFUtil.getBoldFont()); 
    PdfPCell unitPrc = PDFUtil.getTableHeaderCell(PDFUtil.QUOTED_PRICE, 
     PDFUtil.getBoldFont()); 

    PdfPCell disc = PDFUtil.getTableHeaderCell(
     PDFUtil.ITM_DISCOUNT_PERCENT, PDFUtil.getBoldFont()); 
    PdfPCell netAmt = PDFUtil.getTableHeaderCell(PDFUtil.NET_PRICE, 
     PDFUtil.getBoldFont()); 
    PdfPCell amt = PDFUtil.getTableHeaderCell(PDFUtil.AMOUNT_LABEL, PDFUtil 
     .getBoldFont()); 
    amt.setHorizontalAlignment(Element.ALIGN_RIGHT); 
    itemListTab.addCell(slNo); 

    itemListTab.addCell(itmDesc); 

    itemListTab.addCell(full); 
    itemListTab.addCell(loose); 
    itemListTab.addCell(unitPrc); 

    itemListTab.addCell(disc); 
    itemListTab.addCell(netAmt); 
    itemListTab.addCell(amt);ArrayList aList = vendPOVO.getItemList(); 
    if (aList != null) 
    { 
    Object[] iList = aList.toArray(); 
    Arrays.sort(iList, new ItemSNoComparator(aList)); 
    int len = iList.length; 
    InventoryLogger.logDebug("After sorting the item list by SNo"); 
    InventoryLogger.logDebug("length"+len); 



    int lenthChr = 0; 
    int lineLength = 34; 
    float maxLineLength = 34; 
    for (int j = 0; j < len; j++) 
    { 
     ItemMasterVO itmMstrVO = (ItemMasterVO) iList[j]; 
     if (InventoryConstants.TRUE.equals(itmMstrVO.getVendPurOrdInd())) 
     { 

    String ctry = " "; 
    if(itmMstrVO.getCtryOfOrigin() != null) 
    { 
     ctry = InventoryUtil.getStaticElementDescription(itmMstrVO.getCtryOfOrigin(),InventoryConstants.STATIC_ELE_CTRY); 
    } 
    String uomDesc = ""; 
    String looseUomTemp = ""; 
    String Space = ""; 
    if(itmMstrVO.getUomDesc().matches(InventoryConstants.UOM_KGGM)) 
    { 
     uomDesc = "1 KG "; 
     looseUomTemp = "KG"; 
    } 
    else 
    { 
     uomDesc = itmMstrVO.getUomDesc(); 
     looseUomTemp = itmMstrVO.getLooseUOM(); 
    } 

    int lenthChrTmp = (itmMstrVO.getItemDesc1() + "/" + itmMstrVO.getItemDesc2() + "/" + uomDesc+ "/" + ctry).length() ; 

    lenthChr = (lenthChr > lenthChrTmp)?lenthChr:lenthChrTmp; 


     } 
    } 



    int mod = ((lenthChr % lineLength)> 0)?1:0; 
    maxLineLength = ((lenthChr/lineLength) + mod) * 13; 

    for (int i = 0; i < len; i++) 
    { 
     InventoryLogger.logDebug("inside for"); 
     ItemMasterVO itmMstrVO = (ItemMasterVO) iList[i]; 
     if (InventoryConstants.TRUE.equals(itmMstrVO 
     .getVendPurOrdInd())) 
     { 
    String ctry = " "; 
    InventoryLogger.logDebug("Country of origin"+itmMstrVO.getCtryOfOrigin()); 
    if(itmMstrVO.getCtryOfOrigin() != null) 
    { 
     ctry = InventoryUtil.getStaticElementDescription(
     itmMstrVO.getCtryOfOrigin(),InventoryConstants.STATIC_ELE_CTRY); 
    } 
    String uomDesc = ""; 
    String looseUomTemp = ""; 
    if(itmMstrVO.getUomDesc().matches(InventoryConstants.UOM_KGGM)) 
    { 
     uomDesc = "1 KG "; 
     looseUomTemp = "KG"; 
    } 
    else 
    { 
     uomDesc = itmMstrVO.getUomDesc(); 
     looseUomTemp = itmMstrVO.getLooseUOM(); 
    } 
    String flFlagCheck = ""; 
    InventoryLogger.logDebug("fl"+itmMstrVO.getFullLooseInd()); 
    if(itmMstrVO.getFullLooseInd().matches(InventoryConstants.FULL_LOOSE_IND_F)) 
    { 
     flFlagCheck = itmMstrVO.getFullUOM(); 
    } 
    else 
    { 
     flFlagCheck = itmMstrVO.getLooseUOM(); 
    } 

    itemListTab 
      .addCell(new PdfPCell(new Phrase(itmMstrVO 
     .getCusQuoSerialNo(), PDFUtil 
     .getNormalFont()))); 

    PdfPCell descCell = new PdfPCell(new Phrase(itmMstrVO 
      .getItemDisplayName()+ "/" + uomDesc + "/" + ctry , PDFUtil 
      .getNormalFont())); 
    descCell.setFixedHeight(maxLineLength); 
    itemListTab.addCell(descCell); 

    itemListTab.addCell(new PdfPCell(new Phrase(Long 
      .toString(itmMstrVO.getQuoFull())+" "+itmMstrVO.getFullUOM(), PDFUtil 
      .getNormalFont()))); 
    PdfPCell cellone = new PdfPCell(new Phrase(Long.toString(itmMstrVO.getQuoLoose())+" "+itmMstrVO.getLooseUOM(), PDFUtil.getNormalFont()));itemListTab.addCell(cellone);itemListTab.addCell(new PdfPCell(new Phrase(InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getDiscUnitPrice())+"/"+flFlagCheck, PDFUtil 
      .getNormalFont()))); 

    itemListTab.addCell(new PdfPCell(new Phrase(InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getDiscPercent()), PDFUtil 
      .getNormalFont()))); 
    itemListTab.addCell(new PdfPCell(new Phrase((InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getDiscUnitPrice()))+"/" +flFlagCheck, PDFUtil.getNormalFont()))); 
    itemListTab.addCell(new PdfPCell(new Phrase(InventoryUtil.getTwoDecDigPrecisionMin(itmMstrVO.getAmount()), PDFUtil 
      .getNormalFont()))); 
     } 
    } 
    } 
    PdfPCell addCell = new PdfPCell(itemListTab); 
    addCell.setBorder(0); 
    mainTable.addCell(addCell); 

は、ここに私のコードです。高さを計算した後、プロパティをpdfpcell以下に設定しました。

関連する問題