2014-09-10 4 views
0

도움말, 인 iTextSharp로 PDF를 작성해야합니다. 1) 전체 문서의 녹색 배경 2) 텍스트 (표제, 표, 단락)가 흰색 배경에 나타납니다. 3) 특별 섹션이 분홍색 (또는 다른 색상)으로 표시됩니다. 4) 파란색 배경에 흰색 텍스트가있는 제목.iText Sharp의 컬러 문서 섹션

간단한 문서를 만들 수 있지만 배경색이 정말 저를 싫어합니다.

단락을 사용하여 내용을 추가하지만, 단락의 배경색을 설정하거나 함께 그룹화하는 방법을 모르겠습니다.

enter image description here

답변

0

당신은 등등 Paragraph의, PdfPTable들, 그리고 물체를 사용하여 문서를 만들 수 있습니다. 당신은 PdfContentByte 방법을 사용하여 사각형을 그립니다. 대신 getDirectContent()getDirectContentUnder()를 사용하여

writer.getDirectContentUnder(); // Java 

또는

writer.DirectContentUnder; // C# 

는, 사각형이 등등 Paragraph의, PdfPTable의 아래에 그려하고있다 :이 같은 PdfWriter에서 PdfContentByte 인스턴스를 얻을 수 있습니다.

주요 문제는 좌표를 추적하는 것입니다. 왼쪽 하단 모서리와 오른쪽 위 모서리의 좌표를 알아야합니다.

전체 페이지의 배경을 그리는 것은 아무리 생각해보십시오. 어제이 질문에 답했습니다 : How to draw border for whole pdf pages using iText library 5.5.2

대답에서 각 페이지에 OP 만 필요한 빨간색 테두리가 있기 때문에 사각형에 테두리 색을 정의했습니다. 테두리 대신 사각형의 채우기 색을 정의해야합니다.

어제의 질문에 대한 답변을 검토하면 페이지 이벤트의 개념을 알 수 있습니다. 또한 onParagraph()onParagraphEnd()과 같은 다른 페이지 이벤트 방법을 발견하게됩니다. 이 메서드는 각 단락의 시작과 각 단락의 끝의 Y 좌표를받습니다. 이 좌표를 사용하여 페이지 이벤트에 직사각형을 그릴 수 있습니다.

문제를 해결하려면 BaseColor 멤버 변수, 초기 Y 값을 추적하는 변수 등을 추가해야합니다. 몇 가지 프로그래밍이 필요하지만 내 대답에 설명 된 모든 메커니즘을 사용하여 요구 사항을 충족 할 수 있어야합니다.

0

여기에 내가 그것을 다있어 방법은 다음과 같습니다

  1. 설정 문서의 배경색
  2. 만든 1 열 전체 페이지 너비 테이블과 각 셀에 대한 흰색 배경 을 설정합니다.
  3. 이 세포 사이에 녹색 테두리 그리기 각 섹션
  4. 에 대한 새로운 셀을 추가 셀
  5. 내 모든 컨텐츠를 추가, 배경과 같은 색입니다.

셀에 내용을 배치하면 좌표를 추적하는 문제가 해결됩니다. 내용에는 여러 단락, 하위 테이블 등이 포함될 수 있으므로 onParagraphEnd가 항상 실행되는지 확실하지 않습니다.

내용을 셀에 넣으면 색상을 제어 할 수 있습니다.