2010-03-24 308 views

回答

1

你能鑽機像小高和文本=「---------」增加了新的段落

PdfPCell Cell = new PdfPCell(new Paragraph("------")); 
Cell.Height = 0.2f; 

您也可以自己使用PdfPCellEvent繪製邊界。有不同的圖層可以添加到。在此處查看API:http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCellEvent.html

+0

我想我們無法爲電池組的高度? – 2010-03-24 11:58:00

1

如上所述,使用PdfPCellEvent。下面的代碼應該可以幫你實現這個目標。 Cell event example.通過重寫單元格事件,您基本上可以告訴iText您應該如何繪製單元格。無論何時將任何單元格添加到表格中,他們都將遵循您的規則。

class CustomCell implements PdfPCellEvent { 
public void cellLayout(PdfPCell cell, Rectangle rect, 
        PdfContentByte[] canvas) { 
        PdfContentByte cb = canvas[PdfPTable.LINECANVAS]; 
        cb.setLineDash(new float[] {3.0f, 3.0f}, 0);   
        cb.stroke(); 
      } 
} 

public class Main { 

     public static void main(String[] args) throws Exception { 
      Document document = new Document(); 
      PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); 
      document.open(); 
      CustomCell border = new CustomCell(); 

      PdfPTable table = new PdfPTable(6); 
      PdfPCell cell; 

      for (int i = 1; i <= 6; i++) { 
       cell = new PdfPCell(new Phrase("test"));    
       cell.setCellEvent(border); 
       table.addCell(cell); 
      } 

      document.add(table); 
      document.close(); 
    } 
} 
+0

當我嘗試你的代碼時,E-Clipse發現了錯誤信息......「沒有可用的pdf型封閉實例.....」任何想法發生了什麼? – 2010-03-24 15:49:02

0
PdfPCell Border1 = new PdfPCell(new Paragraph("-----------------------------------------------------------------------------------------------------------------------")); 
      Border1.Border = 0; 
      Border1.VerticalAlignment = 3; 
      Border1.FixedHeight = 5F; 
      Border1.PaddingLeft = -5; 
      Border1.PaddingRight = -5; 
      Border1.PaddingBottom = -5; 
      Border1.PaddingTop = -5; 
1

細胞強調了與破折號:

public class UnderlinedCell implements PdfPCellEvent { 

    public void cellLayout(PdfPCell cell, Rectangle position, 
     PdfContentByte[] canvases) { 
     PdfContentByte canvas = canvases[PdfPTable.LINECANVAS]; 
     canvas.setLineWidth(0.5f); 
     canvas.setLineDash(3f, 3f); 
     canvas.moveTo(position.getLeft(), position.getBottom()); 
     canvas.lineTo(position.getRight(), position.getBottom()); 

     canvas.stroke(); 
    } 
}