2010-12-27 4 views
1

PDFBox에 투명 선이있는 선과 다각형을 그립니다. 다음은 파란색 선을 그리는 방법의 일부 샘플 코드입니다. 그러나 색상의 알파 값을 변경하는 방법을 알 수는 없습니다.PDFBox로 투명 선 그리기

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); 

답변

0

PDFBox는 RGB 값만 사용하므로 java.awt.Color의 알파 값을 사용할 수 없습니다. public void setStrokingColor(Color color)의 javadoc에 따라 단지 : RGB로 지정된 쓰다듬어 색상을,

을 설정합니다.

선을 보이지 않게하기 위해 배경색을 선 색으로 설정할 수도 있습니다. 주 -가 보이지 않는 = 투명 사용자 정의 확장 그래픽 상태 사용하여

+1

이 질문에 대한 다른 대답은 분명히 PDFBox에서도 투명하게 나타납니다. – mkl

2

당신이 이것을 달성 할 수있다 (그래서 당신이 효과를 볼받지 않습니다)! appendRawCommands가 PDFBox 2.0으로

 
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. 
} 
1

을 더 이상 사용되지 않습니다.

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

어떻게 든이 결과 setGraphicsStateParameters() – chitgoks

+0

NullPointerException 스트림에 null 또는 null 그래픽 상태 개체? GraphicsState가 거기에서 초기화되는 것처럼 null이 아니어야합니다. – Sherlock

+0

콘텐츠 스트림에 리소스가 없습니다. 때때로 자원이 필요하지 않지만 자원 객체가 내용 스트림에 필요할 때 코드가 자동으로 인스턴스화되어야하므로 코드에 따라 달라집니다. 해결책은 stream.setResources (새 PDResources())를 사용하는 것입니다. – chitgoks