Is there any way to make the border of a cell with dotted line (e.g _ _ _ _ _ _ _ _ _ _ _ _) instead of solid line ( e.g ________________ ) in iText-5.0.1????
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
could you rig something like adding new paragraphs with small height and text="---------"
PdfPCell Cell = new PdfPCell(new Paragraph("------"));
Cell.Height = 0.2f;
You can also draw the borders yourself using a PdfPCellEvent. There are different layers to add to. See the API here: http://api.itextpdf.com/com/itextpdf/text/pdf/PdfPCellEvent.html
回答2:
As was suggested, use a PdfPCellEvent. The code below should get you most of the way there. Cell event example. By overriding the cell event, you basically tell iText how you think it should draw its cells. Whenever any cells are added to the table they'll follow your rules.
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();
}
}
回答3:
Cell underlined with dashes:
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();
}
}
回答4:
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;