PDF-затенение само по себе создает затенение непрозрачных цветов.
Если вы хотите затенение прозрачности, вы можете создать маску; в шаблоне маски вы используете затенение, например. от белого до черного. При использовании в качестве маски это создает эффект затенения, непрозрачный и прозрачный. При активной маске вы нарисуете серый прямоугольник. Эффект - затенение от непрозрачного серого до прозрачного серого.
Использование iText Я показал что-то подобное в this answer. Изображение есть
является радиальная затенения непрозрачными красный несколько прозрачный красный и был создан этот код:
@Test
public void testComplex() throws FileNotFoundException, DocumentException
{
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("target/test-outputs/transparencyComplex.pdf"));
writer.setCompressionLevel(0);
document.open();
PdfContentByte content = writer.getDirectContent();
content.setRGBColorStroke(0, 255, 0);
for (int y = 0; y <= 400; y+= 10)
{
content.moveTo(0, y);
content.lineTo(500, y);
}
for (int x = 0; x <= 500; x+= 10)
{
content.moveTo(x, 0);
content.lineTo(x, 400);
}
content.stroke();
PdfTemplate template = content.createTemplate(500, 400);
PdfTransparencyGroup group = new PdfTransparencyGroup();
group.put(PdfName.CS, PdfName.DEVICEGRAY);
group.setIsolated(false);
group.setKnockout(false);
template.setGroup(group);
PdfShading radial = PdfShading.simpleRadial(writer, 262, 186, 10, 262, 186, 190, BaseColor.WHITE, BaseColor.BLACK, true, true);
template.paintShading(radial);
PdfDictionary mask = new PdfDictionary();
mask.put(PdfName.TYPE, PdfName.MASK);
mask.put(PdfName.S, new PdfName("Luminosity"));
mask.put(new PdfName("G"), template.getIndirectReference());
content.saveState();
PdfGState state = new PdfGState();
state.put(PdfName.SMASK, mask);
content.setGState(state);
content.setRGBColorFill(255, 0, 0);
content.moveTo(162, 86);
content.lineTo(162, 286);
content.lineTo(362, 286);
content.lineTo(362, 86);
content.closePath();
content.fill();
content.restoreState();
document.close();
}
(TestTransparency.java)
Ваше затенение должно быть реализуется аналогичным образом.
Помогает ли ответ? Если нет, укажите проблему. – mkl