使用iText7我希望用一个带有边框的矩形填充一个空的列。边界方法似乎已从iText7中的Rectangle中消失,我可以找到的唯一示例使用它们。如果Rectangle是正确的方法,我该怎么做?如果没有,那么正确的方法是什么?
答案 0 :(得分:1)
请查看Chapter 2 of the tutorial "iText 7: Building Blocks"
在本教程中,我们创建了一个Rectangle
对象,并将其绘制到PdfCanvas
对象:
Rectangle rectangle = new Rectangle(36, 650, 100, 100);
pdfCanvas.rectangle(rectangle);
pdfCanvas.stroke();
如何获取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
对象获得现有页面:
PdfCanvas canvas = new PdfCanvas(pdf, pdf.getNumberOfPages());
您可以使用PdfCanvas
对象中的不同方法调整线宽,虚线图案,线条颜色等....
还有其他方法可以绘制矩形,但在之前的一个问题中,您提到了ColumnDocumentRenderer
。如果您当前的问题属于同一上下文,则您已拥有Rectangle
个对象,如果您拥有ColumnDocumentRenderer
,则可以访问PdfCanvas
个对象。您可以轻松地自动化应用程序,使其围绕渲染的每个列绘制一个矩形。
当然:既然你从未接受我以前的回答,我的假设可能是错的。
答案 1 :(得分:0)
无论好坏,这似乎达到了我的目标:
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);