2017-11-03 1 views
-1

Ich bin neu bei iTextSharp.
Wie kann ich einen Datensatz pro Seite drucken?
Kann mir jemand einen Beispielcode zur Verfügung stellen, der mir zeigt, wie ich mein Ziel erreichen kann?So drucken Sie einen Datensatz pro Seite mit einem Header für jede Seite in PDF-Dokument mit iTextSharp in C#

+0

Wenn Sie sind neu bei iText, warum haben Sie sich für iTextSharp entschieden (dies ist der alte Name für die C# -Version von iText 5). Vielleicht wissen Sie nicht, dass iTextSharp für * iText 7 * Ende des Lebens * deklariert wurde. Ab iText 7 sprechen wir nicht mehr über iTextSharp; Stattdessen sprechen wir über iText 7 für .NET. Wenn Sie ein neues Projekt starten und immer noch alles über iText wissen, warum würden Sie iText 5 immer noch verwenden, wenn Sie mit iText 7 viel zukunftssicherer arbeiten? –

+2

Willkommen bei StackOverflow. Obwohl die Leute hier im Allgemeinen anderen Entwicklern helfen wollen, ist dies kein Outsourcing-Unternehmen. Bitte senden Sie uns ein Code-Sample von dem, was Sie bereits ausprobiert haben. –

Antwort

0

diese Lösung Versuchen:

using (var output = new MemoryStream()) 
      { 
       using (var document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 40, 40, 30, 90)) 
       { 
        using (var writer = PdfWriter.GetInstance(document, output)) 
        { 
         Phrase phrase = null; 
         PdfPCell cell = null; 
         PdfPTable table = null; 
         try 
         { 
          document.Open(); 
          document.PageCount = 1; 
          writer.PageEvent = new Footer(data); 

          foreach (var item in data) 
          { 
           table = new PdfPTable(1); 
           table.SpacingBefore = 20; 
           table.WidthPercentage = PageSize.A4.Width; 
           float[] ProfessionalServices = new float[1]; 
           ProfessionalServices[0] = (float)(1 * PageSize.A4.Width); 
           table.SetWidthPercentage(ProfessionalServices, PageSize.A4); 

           phrase = new Phrase("Record :" + item); 
           cell = new PdfPCell(phrase); 
           cell.Border = 0; 
           cell.Padding = 2; 
           cell.Colspan = 3; 
           cell.HorizontalAlignment = Element.ALIGN_RIGHT; 
           table.AddCell(cell); 

           table.WriteSelectedRows(0, -1, document.Left, document.Top - (100 + 20), writer.DirectContent); 
           document.Add(table); 

           document.ResetPageCount(); 
           document.NewPage(); 
          } 
          document.Close(); 
         } 
         catch (Exception ex) 
         { 

         } 

         if (!Directory.Exists(current.Server.MapPath("~/bill-pdf/"))) 
          Directory.CreateDirectory(current.Server.MapPath("~/bill-pdf/")); 
         string pdfFilePath = current.Server.MapPath("~/bill-pdf/" + guid + ".pdf"); 
         File.WriteAllBytes(pdfFilePath, output.ToArray()); 
         if (File.Exists(filePath)) 
          File.Delete(filePath); 
        } 
       } 
      } 

Footer Code Methode:

#region Footer Class 

    public partial class Footer : PdfPageEventHelper 
    { 
     #region Constructor 
     public Footer() 
     { 

     } 
     #endregion 

     #region OnStartPage 
     public override void OnStartPage(PdfWriter writer, Document document) 
     { 
      if (document.PageNumber > 1) 
      { 
       string footerMessage = "Page " + document.PageNumber; 
       Paragraph footer = new Paragraph(footerMessage, FontFactory.GetFont(FontFactory.HELVETICA, 9)); 
       footer.Alignment = Element.ALIGN_RIGHT; 
       PdfPTable footerTbl = new PdfPTable(numColumns: 1); 
       footerTbl.WidthPercentage = 100; 
       footerTbl.TotalWidth = PageSize.A4.Width; 

       PdfPCell cell = new PdfPCell(new Phrase(footer)); 
       cell.Border = 0; 
       cell.HorizontalAlignment = Element.ALIGN_RIGHT; 
       footerTbl.AddCell(cell); 
       footerTbl.WriteSelectedRows(0, -1, document.RightMargin - 80, document.Top + 30, writer.DirectContent); 
      } 
     } 
     #endregion 

     #region OnEndPage 
     public override void OnEndPage(PdfWriter writer, Document doc) 
     { 

      string footerMessage = "Footer Text"; 


       Paragraph footer = new Paragraph(footerMessage, FontFactory.GetFont(FontFactory.HELVETICA, 9)); 
       footer.Alignment = Element.ALIGN_CENTER; 
       PdfPTable footerTbl = new PdfPTable(numColumns: 1); 
       footerTbl.TotalWidth = PageSize.A4.Width; 

       PdfPCell cell = new PdfPCell(new Phrase(footer)); 
       cell.Border = 0; 
       cell.HorizontalAlignment = Element.ALIGN_CENTER; 
       footerTbl.AddCell(cell); 
       //footerTbl.WriteSelectedRows(0, 10, 50, 55, writer.DirectContent); 
       footerTbl.WriteSelectedRows(0, -1, 0, 55, writer.DirectContent); 

     } 
     #endregion 

    } 

    #endregion 

Try-Code können Sie Header gesetzt und eigene Inhalte für Header Fußzeile OnStartPage() ändern und Fußzeile ändern OnEndPage()

+2

@Bruno Lowagie Ja, ich weiß nicht, warum Leute sofort –

+0

sofort downvoted ja, Sie haben Recht. –

+0

Vielleicht, weil es eine reine Codeantwort ist? Es gibt einige Themen in Meta über reine Code-Antworten, also ist es anscheinend eine Sache über SO. –

Verwandte Themen