Hola amigos, al final tuve que hacer mi reporte con PDF, pero estoy teniendo un 
problema, esto lo encontre en internet y lo acotege a mi necesidad, solo que no 
me adjunta la plantilla, si veo que se va creando en el temporal, pero no lo 
adjunto al PDF definitivo (certificado_multiple.pdf), sin embargo si cierro el 
pdf dentro del ciclo si me incluye la plantilla, pero solo una vez obvio, ¿Qué 
me esta faltando amigos, a ver si termino esto

 

 

    Document doc = new Document(PageSize.LETTER.Rotate(), 100f, 100f, 100f, 
100f);

            PdfWriter writer = PdfWriter.GetInstance(doc, new 
FileStream(ConfigurationManager.AppSettings["UploadRepositoryPath"] + "/" + 
myAccessSite.MyIdInstitucion.ToString().Trim() + "/certificado_multiple.pdf", 
FileMode.Create));

            doc.Open();

 

            for (int h = 1; h <= dtk.Rows.Count - 1; h++)

            {

                //lee la planilla y estampa la primer hoja 

                PdfReader plantilla = new 
PdfReader(Server.MapPath("PlantillaPrimaria.pdf"));

                PdfStamper pdfStamper = new PdfStamper(plantilla, new 
FileStream( 
ConfigurationManager.AppSettings["UploadRepositoryPath"]+"/"+myAccessSiteMyIdInstitucion.ToString().Trim()+"/certificado_generado.pdf",
 FileMode.Create));

                pdfStamper.AcroFields.SetField("TextEsc", 
dtk.Rows[h]["NombreEscuela"].ToString());

                pdfStamper.AcroFields.SetField("TextNombre", 
dtk.Rows[h]["Nombre"].ToString());

                pdfStamper.AcroFields.SetField("TextApellido1", 
dtk.Rows[h]["PrimerApellidos"].ToString());

                pdfStamper.AcroFields.SetField("TextApellido2", 
dtk.Rows[h]["SegundoApellidos"].ToString());

                pdfStamper.AcroFields.SetField("TextCurp", 
dtk.Rows[h]["Curp"].ToString());

                pdfStamper.AcroFields.SetField("TextGrupo", 
dtk.Rows[h]["Grupo"].ToString());

                pdfStamper.AcroFields.SetField("TextTurno", 
dtk.Rows[h]["Turno"].ToString());

                pdfStamper.AcroFields.SetField("TextDirector", 
dtk.Rows[h]["Turno"].ToString());

                pdfStamper.AcroFields.SetField("TextTurno", 
dtk.Rows[h]["Director"].ToString());

                pdfStamper.AcroFields.SetField("TextMestra", 
dtk.Rows[h]["Maestra"].ToString());

                pdfStamper.AcroFields.SetField("TextLugar", 
dtk.Rows[h]["DireccionEscuela"].ToString());

                pdfStamper.AcroFields.SetField("TextAno", 
dtk.Rows[h]["Ano"].ToString());

                pdfStamper.AcroFields.SetField("TextMes", 
dtk.Rows[h]["Mes"].ToString());

                pdfStamper.AcroFields.SetField("TextDia", 
dtk.Rows[h]["Dia"].ToString());

                pdfStamper.AcroFields.SetField("TextMarca1", 
dtk.Rows[h]["Marca1"].ToString());

                pdfStamper.AcroFields.SetField("TextMarca2", 
dtk.Rows[h]["Marca2"].ToString());

                pdfStamper.AcroFields.SetField("TextPromF", 
dtk.Rows[h]["Marca2"].ToString());

                pdfStamper.AcroFields.SetField("TextLetra", 
dtk.Rows[h]["EnLetras"].ToString());

                pdfStamper.AcroFields.SetField("TextPromF", 
dtk.Rows[h]["PromedioFinal"].ToString());

                pdfStamper.AcroFields.SetField("TextCedula", 
dtk.Rows[h]["Cedula"].ToString());

 

                for (int i = 1; i <= 30; i++)

                {

                    pdfStamper.AcroFields.SetField("TextC" + 
i.ToString().Trim(), dtk.Rows[h]["C" + i.ToString().Trim()].ToString());

                }

 

                for (int i = 1; i <= 5; i++)

                {

                    pdfStamper.AcroFields.SetField("TextProm" + 
i.ToString().Trim(), dtk.Rows[h]["CProm" + i.ToString().Trim()].ToString());

                }

 

                for (int i = 1; i <= 5; i++)

                {

                    pdfStamper.AcroFields.SetField("TextF1" + 
i.ToString().Trim(), dtk.Rows[h]["F" + i.ToString().Trim()].ToString());

                }

                pdfStamper.FormFlattening = true;

                pdfStamper.Close();

               

                //lee el estampado y lo adjunta al documento 

                //PdfReader reader = new 
PdfReader("C:/certificado_generado.pdf");

                PdfReader reader = new 
PdfReader(ConfigurationManager.AppSettings["UploadRepositoryPath"]+"/"+myAccessSite.MyIdInstitucion.ToString().Trim()+"/certificado_generado.pdf");

                PdfContentByte cb = writer.DirectContent;

                PdfImportedPage page1 = writer.GetImportedPage(reader,1);

                

                cb.AddTemplate(page1, 1.0F, 0, 0, 1.0F, 0, 0);

                doc.NewPage();

           

            }

            doc.Close();

 

            //abre el PDF 

            Response.ContentType = "application/pdf";

            Response.AddHeader("Content-Disposition", 
"attachment;filename=certificado_multiple.pdf");

            
Response.TransmitFile(ConfigurationManager.AppSettings["UploadRepositoryPath"]+"/"+myAccessSite.MyIdInstitucion.ToString().Trim()+"/certificado_multiple.pdf");
 

 

Responder a