Я использую iText 2.1.7, и я пытаюсь нарисовать простой прямоугольник для моего документа. Следующий блок кода работает так, как ожидалось, и рисует прямоугольник, который охватывает всю страницу, не включая поля страницы.iText: PdfContentByte.rectangle (Rectangle) не ведет себя так, как ожидалось
Document document = new Document(PageSize.A4.rotate());
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte canvas = writer.getDirectContent();
Rectangle pageDimensions = writer.getPageSize();
canvas.saveState();
canvas.rectangle(
pageDimensions.getLeft(marginLeft),
pageDimensions.getBottom(marginBottom),
pageDimensions.getRight(marginRight),
pageDimensions.getTop(marginTop));
canvas.setColorStroke(Color.BLACK);
canvas.stroke();
canvas.restoreState();
document.close();
Однако, если я поменяю блок холст кода немного так, что я определяю прямоугольник за пределами PdfContentByte, то мой код создает пустую страницу.
...
Rectangle marginBox = new Rectangle(
pageDimensions.getLeft(marginLeft),
pageDimensions.getBottom(marginBottom),
pageDimensions.getRight(marginRight),
pageDimensions.getTop(marginTop));
canvas.saveState();
canvas.rectangle(marginBox);
canvas.setColorStroke(Color.BLACK);
canvas.stroke();
canvas.restoreState();
...
Это не предполагаемого использования метода PdfContentByte.rectangle(Rectangle)
?? В идеале я хотел бы определить Rectangles (наряду с их цветами и ширинами границ) таким образом, который не так тесно связан с directContent и имеет свободу добавлять их в directContent в более поздней точке.
Благодарю вас, мистер Лоуджи, я ценю, что вы нашли время, чтобы ответить на мой вопрос. Это 'rect.setBorder (Rectangle.BOX);' строка - недостающий компонент из всего, что я пытался заставить эту работу работать. – Set