Sunday, March 30, 2014

RDLC: Generate PDF form RDLC wtih itext Sharper

 private void GeneratePDFFRomRDLC() {
       Warning[] warnings;
       string[] streamids;
       string mimeType;
       string encoding;
       string extension;

       byte[] bytes = ReportViewerName.LocalReport.Render("PDF", null, out mimeType,
                      out encoding, out extension, out streamids, out warnings);

       FileStream fs = new FileStream(HttpContext.Current.Server.MapPath("output.pdf"),
       FileMode.Create);
       fs.Write(bytes, 0, bytes.Length);
       fs.Close();

       //Open existing PDF
       Document document = new Document(PageSize.LETTER);
       PdfReader reader = new PdfReader(HttpContext.Current.Server.MapPath("output.pdf"));
       //Getting a instance of new PDF writer
       PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(
          HttpContext.Current.Server.MapPath("Print"+Guid.NewGuid().ToString()+".pdf"), FileMode.Create));
       document.Open();
       PdfContentByte cb = writer.DirectContent;

       int i = 0;
       int p = 0;
       int n = reader.NumberOfPages;
       Rectangle psize = reader.GetPageSize(1);

       float width = psize.Width;
       float height = psize.Height;

       //Add Page to new document
       while (i < n) {
          document.NewPage();
          p++;
          i++;

          PdfImportedPage page1 = writer.GetImportedPage(reader, i);
          cb.AddTemplate(page1, 0, 0);
       }

       document.Close();
    }

No comments: