2017-02-17 27 views
3

PDF 문서를 레이아웃하는 옵션을 찾고 있습니다. 매우 정교하고 정확해야합니다.PDFBox : PDPageContentStream 또는 PDPage에 글을 쓸 때 자르기 텍스트

문서는 일종의 보고서이며 기존 배경 위에 데이터를 표시합니다. 경우에 따라 텍스트가 들어가야하는 공간보다 큽니다.

정확한 위치에 텍스트를 자르려고합니다 (텍스트가 그대로 포장되어 있지 않거나 "elipsizing"되지 않습니다). 대부분의 시간 숫자).

여기가 내가 찾고있는 효과입니다. (예를 들어 문자열을 줄이는 방법을 모색하지 않고 문자열을 그대로두고 싶습니다. 실제로 허용 된 영역 밖에서 잘립니다.)

enter image description here

감사 JM

답변

3

우선 경로를 만들고, 예컨대 PDPageContentStream.addRect(). 그런 다음 PDPageContentStream.clip()으로 전화하십시오. 이렇게하면 현재 클리핑 패스와 경로가 교차합니다. 그런 다음 잘라낼 내용을 그립니다.

saveGraphicsState()restoreGraphicsState() 사이에 모든 것을 넣는 것을 잊지 마십시오. 다시 교차되어 클리핑 경로가 잠시 비워집니다.

개발 중에 클리핑 경로가 올바른지 확인하려면 stroke()으로 clip() 전화를 대체하여 어디 있는지 확인하십시오.

+0

흠, 방금 모든 PDPAGEContentStream 클리핑 메서드가 경로에 대해 'n'을 자동으로 실행하는 것을 보았습니다. 왜? 쓰다듬기 및/또는 동시에 채우지 못하게하는 이유는 무엇입니까? – mkl

+0

@mkl "항상 그랬어":-) 나는 그것을 바꿀 필요가 없다. 나는 보았던 PDF에서 "n"이 아닌 다른 것을 "W"보지 못했다. –

+0

Thxs @ TilmanHausherr, 그것은 매력처럼 작동했습니다. 필자가 궁금해하는 이유는 PDFBox에 높은 수준의 기능이없는 이유입니다. 나는 우리 모두가 왼쪽 정렬, 오른쪽 정렬, 자르기, 텍스트 및 나머지를 정당화하기 위해 우리 자신의 기능을 개발해야한다고 가정합니다. 나는 그것이 키트의 일부가 아니라는 것에 놀랐다. 왜 그런가? – jmc34