2012-04-22 43 views
5

Tôi muốn tạo hình chữ nhật tròn trong itextsharp. Dưới đây là kết quả tôi có bây giờ mà không làm tròn:Làm cách nào để làm tròn các góc của đường viền bảng iTextSharp?

enter image description here

và đây là mã của tôi mà xử lý mà đầu ra:

pdftbl = new PdfPTable(3); 
pdftbl.WidthPercentage = 100; 
width = new float[3]; 
width[0] = 0.6F; 
width[1] = 0.2F; 
width[2] = 0.6F; 
pdftbl.SetWidths(width); 
pdfcel = new PdfPCell(new Phrase(Insuredaddress, docFont9)); 
pdfcel.BorderColor = Color.BLACK; 
pdftbl.AddCell(pdfcel); 
pdfcel = new PdfPCell(new Phrase("", docWhiteFont9)); 
pdfcel.Border = 0; 
pdftbl.AddCell(pdfcel); 
pdfcel = new PdfPCell(new Phrase(BkrAddrss, docFont9)); 
pdfcel.BorderColor = Color.BLACK; 
pdftbl.AddCell(pdfcel); 
objDocument.Add(pdftbl); 

tôi có thể thay đổi gì/thêm để đạt được kết quả mong muốn?

Trả lời

7

iText [Sharp] không có chức năng này ngoài hộp. Đó là cách xoay vòng để thực hiện mọi thứ, nhưng trước tiên bạn phải triển khai giao diện IPdfPCellEvent và thứ hai đính kèm trình xử lý sự kiện vào mỗi ô bạn thêm vào bảng. Trước tiên, triển khai đơn giản:

public class RoundRectangle : IPdfPCellEvent { 
    public void CellLayout(
    PdfPCell cell, Rectangle rect, PdfContentByte[] canvas 
) 
    { 
    PdfContentByte cb = canvas[PdfPTable.LINECANVAS]; 
    cb.RoundRectangle(
     rect.Left, 
     rect.Bottom, 
     rect.Width, 
     rect.Height, 
     4 // change to adjust how "round" corner is displayed 
    ); 
    cb.SetLineWidth(1f); 
    cb.SetCMYKColorStrokeF(0f, 0f, 0f, 1f); 
    cb.Stroke(); 
    } 
} 

- về cơ bản tất cả các mã ở trên là vẽ đường viền ô với các góc tròn như bạn muốn.

Sau đó giao cho xử lý sự kiện tạo ở trên như thế này:

RoundRectangle rr = new RoundRectangle();  
using (Document document = new Document()) { 
    PdfWriter writer = PdfWriter.GetInstance(document, STREAM); 
    document.Open(); 
    PdfPTable table = new PdfPTable(1); 
    PdfPCell cell = new PdfPCell() { 
    CellEvent = rr, Border = PdfPCell.NO_BORDER, 
    Padding = 4, Phrase = new Phrase("test") 
    }; 
    table.AddCell(cell); 
    document.Add(table); 
} 
+2

Cảm ơn @kuujinbo nhờ làm việc của mình rất nhiều – Neeraj

+0

Nó không hẳn là câu trả lời cho câu hỏi này bởi vì OP là yêu cầu cho bảng tròn không di động. – Icet

Các vấn đề liên quan