(Поскольку вы использовали только тег «itext», а не «itext7», я предполагаю, что вы используете iText 5.5.x.)
Вы можете нарисовать осевой градиент на PdfContentByte canvas
, используя PdfShading
экземпляр:
PdfShading axial = PdfShading.simpleAxial(pdfWriter, x0, y0, x1, y1, startColor, endColor, extendStart, extendEnd);
canvas.paintShading(axial);
например. если вы хотите добавить светло-красный или светло-зеленый градиент на все страницы существующего PDF, вы можете сделать это следующим образом:
PdfReader pdfReader = new PdfReader(SOURCE);
PdfStamper pdfStamper = new PdfStamper(pdfReader, TARGET);
pdfStamper.setRotateContents(false);
for (int page = 1; page <= pdfReader.getNumberOfPages(); page++) {
Rectangle pageSize = pdfReader.getPageSize(page);
PdfShading axial = PdfShading.simpleAxial(pdfStamper.getWriter(),
pageSize.getLeft(pageSize.getWidth()/10), pageSize.getBottom(),
pageSize.getRight(pageSize.getWidth()/10), pageSize.getBottom(),
new BaseColor(255, 200, 200), new BaseColor(200, 255, 200), true, true);
PdfContentByte canvas = pdfStamper.getUnderContent(page);
canvas.paintShading(axial);
}
pdfStamper.close();
( AddGradientBackground тест testStampGradientBackground
)
Или, если вы хотите добавить светло-красный или светло-зеленый градиент на все страницы PDF-файла, который вы создаете с нуля, вы можете сделать это так:
Document document = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(document, TARGET);
pdfWriter.setPageEvent(new GradientBackground());
document.open();
for (int i=0; i < 20; i++) {
document.add(new Paragraph("Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."));
}
document.close();
( AddGradientBackground test testCreateWithGradientBackground
)
с использованием этого вспомогательного класса
class GradientBackground extends PdfPageEventHelper {
@Override
public void onEndPage(PdfWriter writer, Document document) {
Rectangle pageSize = document.getPageSize();
PdfShading axial = PdfShading.simpleAxial(writer,
pageSize.getLeft(pageSize.getWidth()/10), pageSize.getBottom(),
pageSize.getRight(pageSize.getWidth()/10), pageSize.getBottom(),
new BaseColor(255, 200, 200), new BaseColor(200, 255, 200), true, true);
PdfContentByte canvas = writer.getDirectContentUnder();
canvas.paintShading(axial);
}
}
(внутренний класс в AddGradientBackground )
Результаты выглядят так: