iText 7: Building Blocks 자습서를 살펴보십시오.
Before we start 섹션에서 모든 빌딩 블록은 ElementPropertyContainer
이라는 클래스에서 파생 된 것으로 나타났습니다. 이 클래스는 속성의 컨테이너입니다.
Cell
클래스의 경우에는 패딩을 정의하는 속성 집합이 있습니다. 이러한 속성이 같은 일반적인 방법합니다 (AbstractElement
클래스의 방법을 사용하여) 얻을 수 있습니다 :
System.out.println(cell.getProperty(Property.PADDING_LEFT));
System.out.println(cell.getProperty(Property.PADDING_RIGHT));
System.out.println(cell.getProperty(Property.PADDING_TOP));
System.out.println(cell.getProperty(Property.PADDING_BOTTOM));
를 왜 어려운 당신은 또한 단순히 BlockElement
클래스에서 사용할 수 있습니다 편리한 방법을 사용할 수 있는지 확인하십시오
를 당신이 튜토리얼에서 볼 수 있듯이
System.out.println(cell.getPaddingLeft());
System.out.println(cell.getPaddingRight());
System.out.println(cell.getPaddingTop());
System.out.println(cell.getPaddingBottom());
는 Cell
클래스는 BlockElement
클래스의 서브 클래스입니다. BlockElement
은 AbstractElement
클래스의 하위 클래스입니다. AbstractElement
클래스는 ElementPropertyContainer
클래스의 하위 클래스입니다.
패딩 (또는 너무 기울어 진 경우 여백)을 변경하려면 해당 튜토리얼의 chapter 5을 읽으십시오. 그것은 예는, CellMarginPadding 임명했다 : 나는 눈을 약간 아픈 경우 죄송하지만, 사용하는 색상이처럼 보였다
:
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
Document document = new Document(pdf);
Table table = new Table(new float[]{2, 1, 1});
table.setBackgroundColor(Color.ORANGE);
table.setWidthPercent(80);
table.setHorizontalAlignment(HorizontalAlignment.CENTER);
table.addCell(
new Cell(1, 3).add("Cell with colspan 3")
.setPadding(10).setMargin(5).setBackgroundColor(Color.GREEN));
table.addCell(new Cell(2, 1).add("Cell with rowspan 2")
.setMarginTop(5).setMarginBottom(5).setPaddingLeft(30)
.setFontColor(Color.WHITE).setBackgroundColor(Color.BLUE));
table.addCell(new Cell().add("row 1; cell 1")
.setFontColor(Color.WHITE).setBackgroundColor(Color.RED));
table.addCell(new Cell().add("row 1; cell 2"));
table.addCell(new Cell().add("row 2; cell 1").setMargin(10)
.setFontColor(Color.WHITE).setBackgroundColor(Color.RED));
table.addCell(new Cell().add("row 2; cell 2").setPadding(10)
.setFontColor(Color.WHITE).setBackgroundColor(Color.RED));
document.add(table);
document.close();
}
이는 것처럼 보이는 것입니다 마진과 패딩의 차이점을 설명하는 가장 좋은 방법입니다.
대부분의 속성이 상속됩니다. 예를 들어, 글꼴을 Div
으로 설정하면 해당 글꼴이 Div
에 추가 된 모든 요소의 기본 글꼴이됩니다. 그러나 몇 가지 예외가 있습니다. 패딩은 그 중 하나입니다. 이것은 Cell
클래스에 특정 속성의 기본 값이 정의 된 방법입니다
@Override
public <T1> T1 getDefaultProperty(int property) {
switch (property) {
case Property.BORDER:
return (T1) (Object) DEFAULT_BORDER;
case Property.PADDING_BOTTOM:
case Property.PADDING_LEFT:
case Property.PADDING_RIGHT:
case Property.PADDING_TOP:
return (T1) (Object) 2f;
default:
return super.<T1>getDefaultProperty(property);
}
}
당신이 볼 수 있듯이이, 전체 셀 패딩 값이 없습니다; 패딩은 부수적으로 기본적으로 동일한 4 개의 값으로 구성됩니다.
각 Cell
에 대해 기본값과 다른 패딩을 정의하지 않으려면 Cell
의 하위 클래스를 만들고 MyCustomCell
이라고 부릅니다. getDefaultProperty()
클래스를 재정 의하여 원하는 패딩을 사용한다는 점에서 사용자 정의하십시오.
자습서에서는 둥근 모서리를 도입 할 때마다 렌더러를 선언 할 필요가 없도록 모서리가 둥근 경계선이있는 셀을 그리는 하위 클래스의 예를 찾을 수 있습니다.
본인은 해당 문서의 원본 독자입니다. 난 당신이 유용
죄송합니다. 브루노,하지만 이것은 내 질문에 대답하지 않습니다. 나는 기본적으로 모든 셀에 개별적으로 설정해야하는 기본 셀 패딩 _without_을 설정하는 방법을 요청했습니다. 나는 또한 기본값을 가져 오는 방법을 요청했지만 getPaddingLeft() (또는 무엇이든)는이 값을 반환하지 않습니다. 대신 생성 된 PDF에 기본 채우기가 명확하게 표시 되어도 null을 반환합니다. 2 단위와 비슷한 것. 명시 적으로 0으로 설정하면 암시 적 패딩이 사라집니다. –
방금 편집 한 것을 보았습니다.이 질문의 두 번째 부분에 대답하려고 시도합니다.이 작업을 수행하기 위해 셀을 하위 클래스로 채워야한다는 점이 조금 실망 스럽지만 액세스 할 수있는 방법이없는 것으로 보입니다. 암시 적 기본값을 변경 하시겠습니까? –
그리고 모든 셀에 렌더러를 설정하지 않아도되는 'Cell'의 하위 클래스 예제를 제공했습니다. 또한 상자 *에 기본 덧씌움 *이 없음을 이해하지 못하는 것 같습니다. 패딩은 동일 할 수있는 네 개의 값으로 구성되지만 동일 할 필요는 없습니다. –