我正在生成一个带有itext的文档。
我的iText版本是:itext-2.0.8
我需要关注最终产品:
我有一个包含2列的PDF表格。
我为每个细胞添加了背景颜色。但这就是结果:
是否可以从第一张图片中获取图案?
有些人来样品:
private static Color firstBGColColor = new Color(255,222,166);
...
PdfPTable table = new PdfPTable(2);
table.setWidthPercentage(100);
table.setWidths(new float[]{160,400});
PdfPCell cell;
cell = new PdfPCell();
cell.setPaddingLeft(7);
cell.setPaddingTop(10);
cell.setBorder(Rectangle.NO_BORDER);
cell.setBackgroundColor(firstBGColColor);
答案 0 :(得分:1)
我没有认真使用过如此古老的iText版本,因此只能指向更新的代码。快速浏览一下svn注释结果似乎表明,大多数中心功能已经在iText中存在了很长时间。因此,此代码至少应该告诉您如何开始。
PDF知道平铺模式的概念,赋予ISO 32000-1的第8.7.3节<平铺模式,这应该是您创建正确背景所需的内容。 iText使用TilingPatternColor.java中的辅助方法支持此类切片模式,如示例DeviceColor.java中所示。摘录:
PdfContentByte canvas = writer.getDirectContent();
PdfPatternPainter square = canvas.createPattern(15, 15);
square.setColorFill(new BaseColor(0xFF, 0xFF, 0x00));
square.setColorStroke(new BaseColor(0xFF, 0x00, 0x00));
square.rectangle(5, 5, 5, 5);
square.fillStroke();
定义了这样的PdfPatternPainter
后,您可以从new PatternColor(square)
生成一个颜色实例并使用此颜色。
样本使用它如下:
canvas.saveState();
canvas.setColorFill(new PatternColor(square));
canvas.rectangle(36, 696, 126, 126);
canvas.fillStroke();
canvas.restoreState();
您当然必须以不同方式设计PdfPatternPainter
。因为它本质上是一个PdfTemplate
,你可以拥有创建所需的任何平铺模式所需的所有方法。