2016-09-09 5 views
0

Ich habe eine Seite, die für die Bestätigung ist, ich muss eine PDF-Datei im Grunde mit den gleichen Werten wie die vorherige Seite erzeugen, ich lege ein Logo und eine Kopfzeile, darunter muss ich Gridview übergeben Werte, die aus einer Sitzung kommen, ich versuche herauszufinden, wie man das mit PDFsharp macht, kann aber keinen Weg finden.Rasteransicht zu PDF mit PDFsharp

Dies ist meine aktuelle PDF:

public void Gera_Pdf() 
     { 
      PdfDocument pdf = new PdfDocument(); 
      pdf.Info.Title = "My First PDF"; 
      PdfPage pdfPage = pdf.AddPage(); 
      string texto = "                    Dados do Aceite                                         " + 
                                   "Empresa:" + lblEmpresas.Text + " /Representante:" + lblRepresentante.Text + " /CNPJ:" +lblCnpj.Text; 
      XFont font = new XFont("Times New Roman", 10, XFontStyle.Bold); 
      XGraphics gfx = XGraphics.FromPdfPage(pdfPage); 
      XTextFormatter tf = new XTextFormatter(gfx); 
      DrawImage(gfx, "D:/PDF Sharp/Images/Klabin.png", 50, 50, 50, 50); 
      XRect rect = new XRect(60, 100, 650, 30); 
      gfx.DrawRectangle(XBrushes.White, rect); 
      //tf.Alignment = ParagraphAlignment.Left; 
      tf.DrawString(texto, font, XBrushes.Black, rect, XStringFormats.TopLeft); 

      string pdfFilename = "D:/PDF Sharp/PDF/PdfTeste.pdf"; 
      pdf.Save(pdfFilename); 
      byte[] pdfData; 
      using (var ms = new MemoryStream()) 
      { 
       pdf.Save(ms); 
       pdfData = ms.ToArray(); 
      } 
      Session["pdfBytes"] = pdfData; 

     } 

Und das sind die Werte, die unter dem „Texto“ gehen müssen, es muss nicht ein schönes Gitter sein, nur die Werte zeigen, ist in Ordnung .

public void Carrega_valores() 
     { 
GridViewRow[] valoresNovos = new GridViewRow[300]; 
      valoresNovos = (GridViewRow[])Session["vlColunas"]; 
      DataTable dt = new DataTable(); 
      dt.Columns.Add(new DataColumn("Belnr")); 
      dt.Columns.Add(new DataColumn("Dtemissao")); 
      dt.Columns.Add(new DataColumn("Dtvenc")); 
      dt.Columns.Add(new DataColumn("DIASANTEC")); 
      dt.Columns.Add(new DataColumn("Valor")); 
      dt.Columns.Add(new DataColumn("VLENCARGOS")); 
      dt.Columns.Add(new DataColumn("VLFINAL")); 
      foreach (GridViewRow grdCount in valoresNovos) 
      { 
       if (grdCount != null) 
       { 
        DataRow dr = dt.NewRow(); 
        dr[0] = grdCount.Cells[1].Text; 
        dr[1] = grdCount.Cells[2].Text; 
        dr[2] = grdCount.Cells[3].Text; 
        if(grdCount.Cells[7].Text != " ") 
        { 
         dr[3] = grdCount.Cells[7].Text; 
        } 
        else 
        { 
         dr[3] = ""; 
        } 

        dr[4] = grdCount.Cells[5].Text; 
        dr[5] = grdCount.Cells[8].Text; 
        dr[6] = grdCount.Cells[5].Text; 
        dt.Rows.Add(dr); 
       } 
      } 
      grdSimulacao.DataSource = dt; 
      grdSimulacao.DataBind(); 
     } 

Antwort

1

PDFsharp gibt Ihnen alles, was Sie brauchen - auf niedrigem Niveau: DrawString, DrawRectangle, DrawLine, MeasureString, ...

MigraDoc gibt Ihnen alles, was Sie brauchen - auf einer höheren Ebene: AddTable, AddParagraph, ...

Ich würde MigraDoc verwenden.
http://pdfsharp.net/wiki/HelloMigraDoc-sample.ashx