2011-03-12 6 views
4

iTextSharp 5.0.6을 사용하여 C#으로 PDF 문서를 만들려고합니다. OnStartPage 및 OnEndPage 이벤트의 각 페이지에 머리글 및 바닥 글을 각각 추가하려고합니다.iTextSharp를 사용하여 하단에 PDF 푸터

바닥 글의 경우 바닥 글이 페이지의 끝에서 오른쪽으로 생성되는 반면 페이지의 맨 아래에있게되는 문제가 있습니다.

꼬리말이 항상 하단에 생성되도록 iTextSharp에서 페이지 높이를 지정하는 방법이 있습니까?

감사합니다.

답변

4

페이지의 높이가 정의 항상입니다 :

document.PageSize.Height // document.getPageSize().getHeight() in Java 

는 PDF 0,0 왼쪽 하단 구석에 있음을 명심하고, 당신이 바로 가서으로 증가를 조정합니다.

PdfPageEvent 내에서 절대 좌표를 사용해야합니다. 문서에서 현재 Y를 가져 오는 것 또는 현재 위치에서 Just Drawing Stuff 중 하나 인 것 같습니다. 그러지 마.

또한 모든 페이지에서 똑같은 바닥 글을 사용하려는 경우 모든 것을 PdfTemplate에 그 다음 원하는 템플릿을 여러 페이지에 그릴 수 있습니다. 바닥 글의 가장이 동일

writer.getDirectContent().addTemplateSimple(footerTmpl, 0, 0); 

하더라도, 당신은 저장이 기술을 사용할 수 있습니다

당신의 PdfPageEvent에서 다음
PdfTemplate footerTmpl = writer.getDirectContent().createTemplate(0, 0, pageWidth, footerHeight); 

footerTmpl.setFontAndSize(someFont, someSize); 
footerTmpl.setTextMatrix(x, y); 
footer.showText("blah"); 
// etc 

, 당신은 당신의 페이지 하단에 footerTempl을 추가 할 수 있습니다 메모리, 실행 시간 및 파일 크기.

PdfContentByte 그리기 명령을 직접 사용하지 않으려면 ColumnText을 통해 어느 정도 회피 할 수 있습니다. 해당 클래스를 다루는 iText 또는 iTextSharp로 태그 된 몇 가지 SO 질문이 있습니다. 주변을 둘러 보면 찾을 수 있습니다.

+0

"getDirectContent()"함수에 어떻게 접근합니까? iTextSharp는 writer 객체에 이러한 메서드가없는 것처럼 보입니다. – NickG

+2

@NickG, C#에서는'writer.DirectContent'를 사용할 수 있습니다. –

+0

텍스트 "blah"는 Chrome에서만 볼 수 있습니다. showtext 함수를 BeginText() 및 EndText()로 둘러싸고 다음과 같이 만들 수 있습니다. footer.BeginText(); footer.ShowText ("blah"); footer.EndText(); –

관련 문제