Pregunta

Me gustaría dibujar líneas y polígonos con líneas transparentes en PDFBox. Aquí hay un código de ejemplo de cómo estoy dibujando una línea azul, pero no puedo averiguar para cambiar el valor alfa del color.

PDDocument document = new PDDocument();  
PDPage page = new PDPage();  
document.addPage(page);  
PDPageContentStream contentStream = new PDPageContentStream(document, page);  
contentStream.setStrokingColor(66, 177, 230);  
contentStream.drawLine(100, 100, 200, 200);  
¿Fue útil?

Solución

No se puede utilizar el valor alfa de la java.awt.Color como PDFBox sólo utiliza el valor RGB. Según javadoc de public void setStrokingColor(Color color) simplemente:

Configurar el color acariciar, especifica como RGB.

Una opción podría ser que se establece el color de fondo como el color caricias para que su línea invisible. NOTA -! Invisible = transparente (por lo que no obtendrá el efecto de ver a través)

Otros consejos

A partir de PDFBox 2,0 appendRawCommands está en desuso.

    float alpha = 0.5f;
    PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
    graphicsState.setStrokingAlphaConstant(alpha);
    stream.setGraphicsStateParameters(graphicsState);
    // draw line here

Se puede lograr esto mediante el uso de una costumbre extendida estado de los gráficos:

PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState();
graphicsState.setStrokingAlphaConstant(0.5f);
COSName graphicsStateName = page.getResources().add(graphicsState);
try (PDPageContentStream cs = new PDPageContentStream(document, page, true, true, true)) {
    cs.appendRawCommands("/" + graphicsStateName.getName() + " gs\n");
    // draw your line here.
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top