使用iText7,如何用矩形填充原本为空的列?

使用iText7,如何用矩形填充原本为空的列?,itext,Itext,使用iText7,我希望用一个以文本为首的带边框的矩形填充一个本来是空的列。border方法似乎已经从iText7中的矩形中消失,我能找到的唯一示例都使用它们。如果矩形是正确的方法,我该怎么做?如果没有,正确的方法是什么?无论好坏,这似乎达到了我的目标: AreaBreak nextArea = new AreaBreak(AreaBreakType.NEXT_AREA); document.add(nextArea); float h = document.getRenderer()

使用iText7,我希望用一个以文本为首的带边框的矩形填充一个本来是空的列。border方法似乎已经从iText7中的矩形中消失,我能找到的唯一示例都使用它们。如果矩形是正确的方法,我该怎么做?如果没有,正确的方法是什么?

无论好坏,这似乎达到了我的目标:

AreaBreak   nextArea    = new AreaBreak(AreaBreakType.NEXT_AREA);
document.add(nextArea);
float h = document.getRenderer().getCurrentArea().getBBox().getHeight();
float w = document.getRenderer().getCurrentArea().getBBox().getWidth();
Paragraph endB = new Paragraph(" ");
endB.setHeight(h);
endB.setWidth(w);
SolidBorder b = new SolidBorder(2);
endB.setBorder(b);
document.add(endB); 
请看一看

在本教程中,我们创建一个
矩形
对象,并将其绘制到一个
PdfCanvas
对象:

Rectangle rectangle = new Rectangle(36, 650, 100, 100);
pdfCanvas.rectangle(rectangle);
pdfCanvas.stroke();
PdfCanvas canvas = new PdfCanvas(pdf, pdf.getNumberOfPages());
如何获取
PdfCanvas
对象

您可以从自己创建的
PdfPage
对象创建它:

OutputStream fos = new FileOutputStream(dest);
PdfWriter writer = new PdfWriter(fos);
PdfDocument pdf = new PdfDocument(writer);
PdfPage page = pdf.addNewPage();
PdfCanvas pdfCanvas = new PdfCanvas(page);
或者从
PdfDocument
对象获取现有页面:

Rectangle rectangle = new Rectangle(36, 650, 100, 100);
pdfCanvas.rectangle(rectangle);
pdfCanvas.stroke();
PdfCanvas canvas = new PdfCanvas(pdf, pdf.getNumberOfPages());
您可以调整线条宽度、虚线图案、线条颜色等,。。。在
PdfCanvas
对象中使用不同的方法

还有其他方法可以绘制矩形,但在前面的一个问题中,您提到了一个
ColumnDocumentRenderer
。如果当前问题是同一上下文的一部分,则您已经有了
矩形
对象,如果您有
ColumnDocumentRenderer
,则您可以访问
PdfCanvas
对象。您可以轻松地自动化应用程序,使其围绕渲染的每一列绘制一个矩形


当然:因为你从来没有接受过我之前的回答,我的假设可能是错误的。

要实现如此简单的目标,这相当复杂。我将提供另一个答案。如果OP想让iText进行布局,他的答案可能更切题,因为直接在画布上绘制会绕过iText布局。但是正如您已经注意到的,OP非常不愿意适当地描述他想要什么,所以我们不知道…大多数高级对象(
段落
表格
单元格
,…)都有一个
setBorder()
方法,该方法是为完全相同的目的实现的,但是OP明确要求渲染一个
矩形
。但是OP明确要求渲染一个
矩形
。。。然后使用段落本身。哦,好吧…;)我们必须等到海湾地区的太阳出来才能确定;-)在这里。我想要一个矩形,不一定是矩形。我的段落生成了一个矩形。我推测太阳已经在海湾地区升起了。在我的(坦帕)湾区,它当然有。西海岸的情况很好。