2017-07-01 91 views
0

我将this java code转换为C#,但是我明显错过了一些东西,因为头文件不在我的.pdf文档中。如何将iTextSharp的标题打印到.pdf文件中?

这里的转换代码:

public HttpResponseMessage CreatePdf() 
     { 
      HeaderTable HeaderTable = new HeaderTable(); 
      // step 1 
      Document document = new Document(PageSize.A4, 36, 36, 20 + HeaderTable.getTableHeight(), 36); 
      // step 2 
      var memoryStream = new MemoryStream(); 
      PdfWriter writer = PdfWriter.GetInstance(document, memoryStream); 
      writer.CloseStream = false; 

      writer.PageEvent = HeaderTable; 
      // step 3 
      document.Open(); 
      // step 4 
      for (int i = 0; (i< 50); i++) { 
       document.Add(new Paragraph("Hello World!")); 
      } 

      document.NewPage(); 
      document.Add(new Paragraph("Hello World!")); 
      document.NewPage(); 
      document.Add(new Paragraph("Hello World!")); 
      // step 5 
      document.Close(); 

      memoryStream.Seek(0, SeekOrigin.Begin); 

      return new HttpResponseMessage 
      { 
       Content = new StreamContent(memoryStream) 
       { 
        Headers = 
        { 
         ContentType = new MediaTypeHeaderValue("application/pdf"), 
         ContentDisposition = new ContentDispositionHeaderValue("attachment") 
         { 
          FileName = "TEST.pdf" 
         } 
        } 
       }, 
       StatusCode = HttpStatusCode.OK 
      }; 
     } 

     public class HeaderTable : PdfPageEventHelper 
     { 
      protected PdfPTable table; 

      protected float tableHeight; 

      public HeaderTable() 
      { 
       table = new PdfPTable(1); 
       table.TotalWidth = 523; 
       table.LockedWidth = true; 
       table.AddCell("Header row 1"); 
       table.AddCell("Header row 2"); 
       table.AddCell("Header row 3"); 
       tableHeight = table.TotalHeight; 
      } 

      public float getTableHeight() 
      { 
       return tableHeight; 
      } 

      public void onEndPage(PdfWriter writer, Document document) 
      { 
       table.WriteSelectedRows(0, -1, document.Left, (document.Top + ((document.TopMargin + tableHeight)/2)), writer.DirectContent); 
      } 
     } 

我敢肯定,我做了一个简单的错误,但我没有找到它呢。请帮忙。

回答

0

好吧,我想通了。 相反的:

public class HeaderTable : PdfPageEventHelper 

public void onEndPage(PdfWriter writer, Document document) 

我应该写:

public partial class HeaderTable : PdfPageEventHelper 

public override void OnEndPage(PdfWriter writer, Document document) 
+0

'partial'不应该是必要的(除非您已拆分您的por中的HeaderTable定义t)中,重要的部分是*覆盖*使用*正确的方法名称*(在iTextSharp中,以大写字母开头的方法的.Net约定被遵循,在iText/Java中以小写字母开头的方法的Java约定)。 – mkl