2009-09-29 2 views
3

작은 머리글, 주요 문자열 및 작은 꼬리말로 각각 PdfPCell 클래스의 셀 테이블을 만들고 싶습니다. HeaderandFooter가 셀에 추가 할 수있는 요소가 아니기 때문에 삽입 방법을 찾을 수 없습니다. 한 단락이 다른 단락을 덮어 쓰는 등등. 어떤 아이디어?itextsharp pdfpcell header

미리 감사드립니다.

답변

6

중첩 테이블을 사용할 수 있습니다.
작은 머리글 & 작은 꼬리말이있는 1x1 테이블을 PdfPCell 대신 삽입하십시오.

편집 :

테이블이 여러 페이지에 걸쳐있는 경우에 유용이기 때문에 이제 iTextSharp의 테이블 바닥 글 및 헤더 기능에 대해 잊게 한 다음 바닥 글 & 헤더를 반복합니다. 우리의 경우 머리말 & 꼬리말은 3 개의 셀만 포함 할 내부 테이블에 속할 것이므로 모든 것에 PdfPCell을 사용합시다.

다음 주요 기능은 사용자 지정된 머리글 셀 (높이, 글꼴, 텍스트, ..)을 포함하는 PdfPTable, 기본 텍스트가 들어있는 중간 셀 & 맞춤형 바닥 글 셀을 반환합니다. GetHFCell입니다. 이 함수는 주 테이블에 셀을 추가 할 때마다 호출됩니다 (GeneratePDF에서이 함수를 사용하는 방법 예제).

private static PdfPTable GetHFCell(string header, string footer, string text) 
    { 
     PdfPTable pdft; 
     PdfPCell hc; 
     PdfPCell fc; 

     pdft = new PdfPTable(1); 
     pdft.WidthPercentage = 100f; 
     pdft.DefaultCell.Border = 0; 

     hc = new PdfPCell(new Phrase(header)); 
     hc.Top = 0f; 
     hc.FixedHeight = 7f; 
     hc.HorizontalAlignment = 1; 
     hc.BackgroundColor = iTextSharp.text.Color.ORANGE; 
     ((Chunk)(hc.Phrase[0])).Font = new iTextSharp.text.Font(((Chunk)(hc.Phrase[0])).Font.Family, 5f); 

     fc = new PdfPCell(new Phrase(footer)); 
     hc.Top = 0f; 
     fc.FixedHeight = 7f; 
     hc.HorizontalAlignment = 1; 
     fc.BackgroundColor = iTextSharp.text.Color.YELLOW; 
     ((Chunk)(fc.Phrase[0])).Font = new iTextSharp.text.Font(((Chunk)(fc.Phrase[0])).Font.Family, 5f); 

     pdft.AddCell(hc); 
     pdft.AddCell(text); 
     pdft.AddCell(fc); 

     return pdft; 
    } 

    public void GeneratePDF() 
    { 
     Document document = new Document(); 
     try 
     {    
      PdfWriter.GetInstance(document, new FileStream("File1.pdf", FileMode.Create)); 

      document.Open(); 

      PdfPTable table = new PdfPTable(5); 
      table.DefaultCell.Padding = 0; 
      table.DefaultCell.BorderWidth = 2f; 
      for (int j = 1; j < 6; j++) 
      { 
       for (int i = 1; i < 6; i++) 
       { 
        //calling GetHFCell 
        table.AddCell(
         GetHFCell("header " + ((int)(i + 5 * (j - 1))).ToString(), 
            "footer " + ((int)(i + 5 * (j - 1))).ToString(), 
            "z" + j.ToString() + i.ToString())); 
       } 
      } 

      document.Add(table); 
     } 
     catch (DocumentException de) 
     { 
      //... 
     } 
     catch (IOException ioe) 
     { 
      //... 
     } 
     document.Close(); 
    } 
+0

그래, 그게 내가하려는 일이지만, 지금까지 실패했습니다. 조금 더 구체적으로 말씀해 주시겠습니까? 나는 1 컬럼으로 새로운 PdfPTable을 만들려고했다. 헤더에 1 행을, 바닥 글에 1을 설정했습니다. 그러나, 나는 그 테이블에 그들을 강제 수 없습니다. – Trimack

+0

ImageShack이 이미지를 삭제하고이를 광고로 대체 했으므로 귀하의 게시물에서 이미지를 삭제해야했습니다. 자세한 내용은 http://meta.stackexchange.com/q/263771/215468을 참조하십시오. 가능한 경우 다시 업로드하는 것이 좋습니다. 감사! – Undo