2012-06-21 3 views
3

저는 ITextSharp를 사용하여 PDF를 생성하는 데 사용하고 있습니다. 그러나 최근에 모든 페이지의 위쪽 여백이 무시 된 것처럼 보였습니다. 내 머리글에 결과 작성이 발생합니다.ITextSharp - 첫 번째 페이지 너머의 머리글 영역

현재 마진 : 완벽하게 첫 페이지를 넘어 왼쪽 및 오른쪽 여백 일을 주목해야한다

document.SetMargins(72,72, 36, 36); 

- 그러나 보인다는 위쪽 여백을 무시하고 상단에있는 텍스트를 시작합니다 페이지 (헤더가있는 곳).

왜 이런 일이 일어날 지에 대한 통찰력이 있습니까? 또는 각 페이지의 문서 여백을 강화하는 데 사용할 수있는 영역이나 이벤트가 있습니까? (아마도 OnStartPage 이벤트일까요?)

ITextSharp가 코드 와이드하게 복잡해질 수 있다는 것을 알고 있으면 필요에 따라 추가 코드를 제공하게되어 기쁩니다.

+1

이 문제를 설명하기 위해 좋은 것입니다 만, 예를 서 작은 A : 기본적으로,이 방법은 당신이 2를 생성하는 데 사용 'OnStartPage' 이벤트가 포착 된 이벤트 리스너 등이 있습니다. 사이드 노트로 'OnEndPage' 이벤트 리스너에 헤더와 푸터를 추가하는 것이 일반적으로 선호됩니다. –

+0

나는 무슨 일이 벌어지고 있는지 보여주기 위해 예제 PDF를 보게 될 것이다. 현재 OnStartPage 내에 머리글이 추가되고 OnEndPage 내에 바닥 글이 추가됩니다. 그렇지? –

+1

내가 말했듯이, 일단 모든 내용이 이미 페이지에 포함되면 'OnEndPage' 내에 머리말과 꼬리말을 모두 추가하는 것이 일반적으로 선호됩니다. –

답변

2

Alexy Pigeon이 머리말과 꼬리말을 각각 별도의 이벤트에있는 것과 달리 OnEndPage 이벤트에 포함시키는 방법으로 문제를 해결했습니다. 덮어 쓰기를 방지하기 위해 여백을 조정했습니다 (아래쪽 여백 늘리기).

3

다른 여백을 원한다면 OnPageStart 이벤트를 연결하고 페이지 번호에 따라 여백을 설정하십시오.

internal class DocumentEvents : PdfPageEventHelper 
{ 
    /// <summary> 
    /// Called when [start page]. 
    /// </summary> 
    /// <param name="writer">The writer.</param> 
    /// <param name="document">The document.</param> 
    public override void OnStartPage(PdfWriter writer, Document document) 
    { 
     if (document.PageNumber == 1) 
     { 
      document.SetMargins(40f, 40f, 130f, 20f); 
     } 
     else 
     { 
      document.SetMargins(40f, 40f, 30f, 30f); 
     } 

     document.NewPage(); 
    } 
} 

문서 라이터에 이벤트를 연결할 것을 잊지 마십시오

this.writer.PageEvent = new DocumentEvents(); 
관련 문제