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");