使用iText7,如何填充带有矩形的空列?

时间:2016-06-12 18:45:41

标签: itext

使用iText7我希望用一个带有边框的矩形填充一个空的列。边界方法似乎已从iText7中的Rectangle中消失,我可以找到的唯一示例使用它们。如果Rectangle是正确的方法,我该怎么做?如果没有,那么正确的方法是什么?

2 个答案:

答案 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);