2015-02-04 13 views

답변

1

이 PDF를보십시오 : text_fields.pdf. 이 PDF는 TextFields 예제를 사용하여 작성되었습니다. 다음 코드는 이름 text_2와 필드의 경계를 설정하는 데 사용되었다

text.setBorderStyle(PdfBorderDictionary.STYLE_SOLID); 
text.setBorderColor(BaseColor.BLUE); 
text.setBorderWidth(2); 

우리는 iText RUPS를 사용하여 PDF 내부를 들여다 보면, 우리는이 분야에 대한 필드 사전/위젯 주석을 살펴 자 할 때, Internal structure of a form field

우리는 고체 테두리 스타일합니다 (/S 키의 값 /S)과 값 테두리 폭 (/W)를 정의하는 /BS 사전을 참조 : 우리는 다음과 같은 구조를 볼 수 2.

또한 /MK 항목의 테두리 색 (/BC) 항목은 [ 0 0 1 ]이라는 값을 갖는 배열입니다. 즉 테두리 색상은 Red 값이 0, Green 값이 0, Blue 값이 1 인 RGB 색상입니다. 이는 파일을 만들 때 색상을 BaseColor.BLUE으로 설정 한 것과 일치합니다.

필드에 AcroField.Item 개체가 있다고합니다. 지금 당신은 iText를 RUPS으로 표시 경로를 병합 필드/위젯 주석 사전을 얻고 따라야합니다 : 배열 bc에 저장

AcroFields.Item item = acroFields.getFieldItem(fldName); 
PdfDictionary merged = item.getMerged(0); 
PdfDictionary mk = merged.getAsDict(PdfName.MK); 
PdfArray bc = mk.getAsArray(PdfName.BC); 

값은 배경 색상에 대해 알려줍니다. 배열에 단 하나의 값만있는 경우 회색 색이 있고, 세 개가있는 경우 색이 있고, 4 색 인 경우 CMYK 색이 있습니다.

경고 : 일부 값이 없을 수도 있습니다 (예 : /BC 항목이 없을 수 있음). 이 경우 NullPointerException을 얻을 수 있습니다.

+0

감사합니다. 그것은 잘 작동합니다. iText RUPS도 살펴 보겠습니다. – user2296988

+1

예! RUPS는 PDF 파일의 내부 동작을 이해하는 데 도움이됩니다. PDF를 디버깅 할 때 사용하지만, 질문에 대답하기 위해 작성한 스 니펫과 같은 코드를 작성해야 할 때도 사용합니다. –