Как поставить внешнюю строку для таблицы, используя itextsharp в c # asp.net

0

Я создаю таблицу 2 * 2 в pdf файле. Я просто хочу поставить внешнюю границу для таблицы, Нет необходимости показывать границу внутренних ячеек. Я так пробовал

 var back= new PdfPTable(2); //table for back
           back.DefaultCell.Border = 1;
           PdfPCell cell20 = new PdfPCell(new Phrase("cell1", body));
           cell20.Border = 0;
           back.AddCell(cell20);

           PdfPCell cell21 = new PdfPCell(new Phrase("cell2", body));
           cell21.Border = 0;
           cell21.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
           back.AddCell(cell21);

           PdfPCell cell22 = new PdfPCell(new Phrase("cell3"));
           cell22.Border = 0;
           cell22.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
           back.AddCell(cell22);

           PdfPCell cell23 = new PdfPCell(new Phrase("cell4", body));
           cell23.Border = 0;
           cell23.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right
           back.AddCell(cell23);

но это приводит к таблице без какой-либо границы, пожалуйста, помогите

  • 0
    вам нужно определить вторую таблицу и затем обернуть эту таблицу в нее.
Теги:
pdf-generation
itextsharp

1 ответ

2

Вам нужно создать событие таблицы, например:

public class OuterBorder implements PdfPTableEvent {
    public void tableLayout(PdfPTable table, float[][] width, float[] height,
            int headerRows, int rowStart, PdfContentByte[] canvas) {
        float widths[] = width[0];
        float x1 = widths[0];
        float x2 = widths[widths.length - 1];
        float y1 = height[0];
        float y2 = height[height.length - 1];
        PdfContentByte cb = canvas[PdfPTable.LINECANVAS];
        cb.rectangle(x1, y1, x2 - x1, y2 - y1);
        cb.stroke();
    }
}

Как вы можете видеть, мы используем параметр width и height переданный tableLayout() для определения границ прямоугольника, и рисуем этот прямоугольник LINECANVAS.

Чтобы это событие таблицы работало, вам нужно объявить его в таблице. В вашем случае это будет:

back.setTableEvent(new OuterBorder());

Обратите внимание, что мой код написан на Java на основе примера PressPreviews из моей книги. Для соответствующего кода С# обратитесь к примерам iTextSharp.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню