iText-5.0.1 + сделать границу PdfPTable пунктирной линией - PullRequest
1 голос
/ 24 марта 2010

Есть ли способ сделать границу ячейки пунктирной линией (например, _ _ _ _ _ _ _ _ _ _ _ _) вместо сплошной линии (например, ________________) в iText-5.0.1 ????

Ответы [ 4 ]

1 голос
/ 02 июня 2014

Ячейка, подчеркнутая тире:

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();
    }
}
1 голос
/ 24 марта 2010

Как было предложено, используйте PdfPCellEvent. Код ниже должен помочь вам в этом. Пример события ячейки. Переопределяя событие ячейки, вы в основном сообщаете 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();
     }
}
1 голос
/ 24 марта 2010

Не могли бы вы настроить что-то вроде добавления новых абзацев с небольшой высотой и текстом = "---------"

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

Вы также можете нарисовать границы самостоятельно, используя PdfPCellEvent. Есть разные слои для добавления. См. API здесь: http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCellEvent.html

0 голосов
/ 15 февраля 2013
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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...