2009-10-30 2 views
0

ASP.NET를 사용하여 PDF genreating에 itext.dll을 사용하고 다음과 같은 형식으로 내 문서에서 바닥 글을 원합니다.ASP.NET을 사용하여 PDF를 생성하는 데 itext.dll을 사용하고 문서에서 바닥 글을 원하십니까?

 Page 1 of 6 

    HeaderFooter footer = new HeaderFooter(new Phrase("Page"), new Phrase(" of 6")); 
    footer.setBorder(Rectangle.NO_BORDER); 
    footer.setAlignment(Element.ALIGN_CENTER); 
    document.setFooter(footer); 

총 페이지 수를 하드 코딩하지 않고도 가능합니까? 나는. 문서에 총 숫자 페이지를 가져 오는 방법이 있습니까?

+3

14 개의 질문, 1 개의 답변을 받아 들였습니다 ... – mjv

+0

이것은 순수 iTextSharp 질문이므로 ASP.NET과의 관계가 거의 없습니다. –

답변

2

나는 이것을하기위한 (적어도) 2 가지 방법이 있음을 발견했다.

하나는 바닥 글없이 그것에 총 페이지 번호를 근절하기 위해 그 사용 PdfStamper 후 문서를 작성하는 것입니다. 그러나 그 결과 나는 MemoryStream에 스탬퍼 제품을 출력하고 동시에 스트림을 닫지 않고 스탬퍼를 닫을 방법이없는 것 같아서 어떤 문제가 생겼습니다.

다른 방법은 전체 페이지 수를 나타내는 PdfTemplate 인스턴스를 하나 만들고이를 모든 페이지에 바닥 글 또는 원하는 곳에 추가하는 것입니다.

public override void OnCloseDocument(PdfWriter writer, Document document) 
{ 
    PageCountTemplate.BeginText(); 
    PageCountTemplate.SetFontAndSize(HeaderFont.BaseFont, HeaderFont.Size); 
    PageCountTemplate.ShowText((writer.CurrentPageNumber - 1).ToString()); 
    PageCountTemplate.EndText(); 
} 
개인적으로도 템플릿을 만들 OnOpenDocument를 사용

OnEndPage 각에 작성 :

다음으로 계산 자신의 PdfPageEventHelper 클래스를 사용하고 총 페이지로 템플릿을 채울 수있는 방법을 OnCloseDocument 구현할 수 있습니다 페이지.

편집 : Jan의 질문에 대한 답변을 얻으려면 OnCloseDocument이 전체 문서 작성시 한 번만 호출됩니다. Doc.Close()라고 할 때 나는 의미한다.

+0

OnCloseDocument가 각 페이지 또는 문서를 호출할까요? –