Вы добавляете свое содержание водяного знака в UnderContent
следующим образом:
underContent.saveState();
underContent.setGState(gs);
underContent.beginText();
underContent.setFontAndSize(bf, fontSize);
underContent.setColorFill(Color.LIGHT_GRAY);
underContent.addImage(image, image_width, 0, 0, image_height, x_co_ordinate , y_co_ordinate );
underContent.endText();
underContent.restoreState();
Т.е. вы добавляете свое (растровое изображение) к нему внутри текстового объекта .Это недопустимо, текстовые объекты могут не содержать внешние объекты или встроенные объекты изображения.Добавьте изображение вне текстового объекта:
underContent.saveState();
underContent.setGState(gs);
underContent.beginText();
underContent.setFontAndSize(bf, fontSize);
underContent.setColorFill(Color.LIGHT_GRAY);
underContent.endText();
underContent.addImage(image, image_width, 0, 0, image_height, x_co_ordinate , y_co_ordinate );
underContent.restoreState();
При этом вы ничего не добавляете в этот текстовый объект.Таким образом, вы можете уменьшить код до:
underContent.saveState();
underContent.setGState(gs);
underContent.addImage(image, image_width, 0, 0, image_height, x_co_ordinate , y_co_ordinate );
underContent.restoreState();
Кроме того, вы добавляете этот контент в UnderContent
.Таким образом, прозрачность, установленная в PdfGState
, просто делает изображение бледнее.Если бы вы могли сделать исходное растровое изображение настолько бледным, насколько это в конечном итоге необходимо, вам вообще не нужно использовать этот PdfGState
.В некоторых профилях PDF прозрачность запрещена, поэтому избавление от нее также может быть выгодным ...