2013-06-04 2 views
2

ASP.Net 응용 프로그램에서 동적으로 PDF 파일을 만들고 있습니다. 데이터는 1 페이지에서 10 페이지 이상으로 다양합니다. PdpfTables 및 Cells를 사용하여 완벽하게 작동하는 데이터를 정렬합니다. IT 부서는 새로운 페이지가 필요할 때마다 페이지를 만듭니다. 유일한 문제는 내 페이지를 모든 페이지에 추가 할 수 없으며 첫 번째 페이지에만 적용됩니다.itextsharp 모든 페이지에 1 페이지 템플릿 추가

내 템플릿은 1 페이지 PDF 파일입니다. 내가 말했듯이 나는 다음과 같은 코드

PdfContentByte cb = writer.DirectContent; 
cb.AddTemplate(page, 0, 0); 

을 사용하고 첫 번째 페이지에 추가하려면 첫 페이지의 잘 작동하지만, 그 이후되지 않은 페이지. 그래서 나는 모든 스트림을 닫습니다 바로 앞에 다음 코드를 추가했지만, 그것은 아무것도

for (var i = 2; i <= writer.CurrentPageNumber; i++) 
{ 
    var y = (writer.PageSize.Height * (i - 1)); 
    cb.AddTemplate(page, 0, y); 
} 

정말 정확히 내 문제에 관한 그물에 아무것도없는 것하지 않습니다, 그러나 그 문제는 거기 밖으로 그 비슷한 것이 도움이되지 못했습니다.

조언을 주시면 감사하겠습니다.

+0

y가 페이지의 높이보다 큰 위치에 (0, y) 위치에 템플릿을 추가하면 템플릿을 추가하는 것입니다. 페이지의 보이는 부분 바깥 쪽. 그것은 당신이 그것이 효과가 있다고 생각하는 이유를 꺾고, 당신을 돕기를 원하는 사람들을 정말로 혼란스럽게합니다. mkl의 대답을 받아 들여야합니다. 100 % 정확합니다. –

+0

Y가 페이지의 높이이기 때문에, 내 이론은 다음 페이지에서 시작한다는 것입니다. 나는 그의 대답을 지금 시험하고있다. 그것은 당신을 위해 일할 수도 있지만 그것이 내 상황에서 작동한다는 것을 의미하지는 않습니다! – Largoh

+0

페이지는 별도의 항목입니다. HTML이 아닌 PDF입니다. –

답변

5

각 페이지에서 어떤 일이 일어나기를 원하면 페이지 이벤트를 사용해야하고 OnEndPage 전화를 건 경우에 행동해야합니다. Webified iTextSharp 예제 Stationery.cs에서는이를 수행하는 방법을 보여줍니다. 그것은 본질적으로 페이지 이벤트 리스너로 내부 헬퍼 클래스를 사용하도록 PdfWriter을 포스트 초기화하고 배경 검색 :

private PdfImportedPage page; 

그것은이 TemplateHelper 내부 도우미에 의해 사용됩니다

PdfWriter writer = PdfWriter.GetInstance(document, ms); 
[...] 
writer.PageEvent = new TemplateHelper(this); 
PdfReader reader = new PdfReader(stationary); 
page = writer.GetImportedPage(reader, 1); 

page는 멤버 변수입니다 클래스 :

+0

완벽. 고맙습니다. 주위에 내 머리를 얻기 위해 잠을 자고 있었지만 지금은 효과가 있습니다. 첫 번째 페이지 이후에 페이지의 위쪽 여백을 수정하면됩니다. 어렵지 않아야합니다. 대단히 감사합니다. – Largoh

관련 문제