Domanda

Vorrei disegnare linee e poligoni con linee trasparenti PDFBox. Ecco alcuni esempi di codice di come sto disegnando una linea blu, ma non riesco a capire per cambiare il valore alfa del colore.

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);  
È stato utile?

Soluzione

Non è possibile utilizzare il valore alfa del java.awt.Color come PDFBox utilizza solo il valore RGB. Come da javadoc di public void setStrokingColor(Color color) semplicemente:

Imposta il colore accarezzare, specificato come RGB.

Una possibilità potrebbe essere che si imposta il colore di sfondo come il colore carezze per rendere la vostra linea invisibile. NOTA -! Invisibile = trasparente (in modo da non ottenere l'effetto vedere attraverso)

Altri suggerimenti

A partire dal PDFBox 2.0 appendRawCommands è deprecato.

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

È possibile raggiungere questo obiettivo utilizzando una consuetudine esteso stato grafico:

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.
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top