Hello, this is the code that we use to convert to pdf and add the headers and footers when they correspond:
private void ProcesarOrdenConversion(OrdenConversion ordenConversion, string pEntorno)
{
Entorno entorno = ManagerEntornosConfig.Instance.GetEntornoByName(pEntorno);
//Carga el blob original en la orden de conversion
ordenConversion.Archivo = ServicioBlobProxy.ObtenerDocumentoOriginal(entorno.Servicio, false, ordenConversion.BlobId);
//convierte a pdf
ordenConversion.Archivo.ArrayDatos = ConversorPdf.CrearPDF(ordenConversion.Archivo.ArrayDatos,
, (ordenConversion.AltoCabezal > 0 ? ordenConversion.AltoCabezal : 0) + ordenConversion.MargenSuperior);
//agrega el cabezal
if (ordenConversion.AgregarCabezal == Constantes.Verdadero)
{
//Obtenemos el archivo original
Archivo cabezal = ServicioBlobProxy.ObtenerDocumentoOriginal(entorno.Servicio, false, ordenConversion.BlobCabezalId);
string html = System.Text.Encoding.UTF8.GetString(cabezal.ArrayDatos);
ordenConversion.Archivo.ArrayDatos = ConversorPdf.CrearEncabezado(ordenConversion.Archivo.ArrayDatos, html, ordenConversion.NumeroDocumento, ordenConversion.NumeroSecuencia.ToString(), ordenConversion.MargenSuperior);
}
//Graba el archivo convertido a PDF.
int idBlobPdf = ServicioBlobProxy.GrabarDocumentoPDF(entorno.Servicio, ordenConversion.BlobIndexable == 1, ordenConversion.Archivo, ordenConversion.TipoContenido);
//setea el ID del nuevo blob
ordenConversion.CargarBlodPDF(idBlobPdf);
//Paso la orden a Estado Convertido
Estado estadoConvertida = ConversionRepositorio.ObtenerEstado(Enumerados.EstadoOrdenConversion.Convertida.ToString());
ordenConversion.CambiarEstado(estadoConvertida);
UnitOfWork.Commit();
}
These are the codes of the main functions that are referenced:
byte[] IConversorPdf.CrearPDF(byte[] documentArray, double margenSuperior)
{
Aspose.Words.License licensewords = new Aspose.Words.License();
licensewords.SetLicense(“Aspose.Total.lic”);
MemoryStream outStream = null;
Stream stream = null;
byte[] retorno;
try
{
stream = new MemoryStream(documentArray);
var doc = new Aspose.Words.Document(stream);
foreach (Aspose.Words.Section sec in doc.Sections)
{
Aspose.Words.PageSetup ps = sec.PageSetup;
ps.TopMargin = margenSuperior;
}
outStream = new MemoryStream();
var so = Aspose.Words.Saving.SaveOptions.CreateSaveOptions(Aspose.Words.SaveFormat.Pdf);
so.MemoryOptimization = true;
doc.Save(outStream, so);
retorno = outStream.ToArray();
}
finally
{
if (outStream != null)
outStream.Close();
if (stream != null)
stream.Close();
GC.Collect();
}
return retorno;
}
html: “<table id=“tblCabezal” name=“tblCabezal” width=“570px” align=“center”>\r\n \r\n <td width=“35%”>\r\n <img src=“data:image/gif;base64,R0lGODdhWAAWAPcAAAAAAIAAAACAAICAAAAAgIAAgACAgMDAwMDcwKbK8EAgAGAgAIAgAKAgAMAg\r\nAOAgAABAACBAAEBAAGBAAIBAAKBAAMBAAOBAAABgACBgAEBgAGBgAIBgAKBgAMBgAOBgAACAACCA\r\nAECAAGCAAICAAKCAAMCAAOCAAACgACCgAECgAGCgAICgAKCgAMCgAOCgAADAACDAAEDAAGDAAIDA\r\nAKDAAMDAAODAAADgACDgAEDgAGDgAIDgAKDgAMDgAODgAAAAQCAAQEAAQGAAQIAAQKAAQMAAQOAA\r\nQAAgQCAgQEAgQGAgQIAgQKAgQMAgQOAgQABAQCBAQEBAQGBAQIBAQKBAQMBAQOBAQABgQCBgQEBg\r\nQGBgQIBgQKBgQMBgQOBgQACAQCCAQECAQGCAQICAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCg\r\nQMCgQOCgQADAQCDAQEDAQGDAQIDAQKDAQMDAQODAQADgQCDgQEDgQGDgQIDgQKDgQMDgQODgQAAA\r\ngCAAgEAAgGAAgIAAgKAAgMAAgOAAgAAggCAggEAggGAggIAggKAggMAggOAggABAgCBAgEBAgGBA\r\ngIBAgKBAgMBAgOBAgABggCBggEBggGBggIBggKBggMBggOBggACAgCCAgECAgGCAgICAgKCAgMCA\r\ngOCAgACggCCggECggGCggICggKCggMCggOCggADAgCDAgEDAgGDAgIDAgKDAgMDAgODAgADggCDg\r\ngEDggGDggIDggKDggMDggODggAAAwCAAwEAAwGAAwIAAwKAAwMAAwOAAwAAgwCAgwEAgwGAgwIAg\r\nwKAgwMAgwOAgwABAwCBAwEBAwGBAwIBAwKBAwMBAwOBAwABgwCBgwEBgwGBgwIBgwKBgwMBgwOBg\r\nwACAwCCAwECAwGCAwICAwKCAwMCAwOCAwACgwCCgwECgwGCgwICgwKCgwMCgwOCgwADAwCDAwEDA\r\nwGDAwIDAwKDAwP/78KCgpICAgP8AAAD/AP//AAAA//8A/wD//////yH5BAAAAAAALAAAAABYABYA\r\nAAj/AEdpGvgr08BNv1pF0pTplq2Fmn5J/EfxH7qLGDNWxFjRYsaPIEFuDEkSHStEkCBFuoUSUURS\r\nLW+1QrnyV8eS6kaiu1my50WdPjHKbEnKVcuXKDMlROnKJtCL6S7mpMjxadCPVn1GcjUz5VJILn/B\r\njCRxJiJbPH/+sydVZ9qOcOP+U6dWrly6FzUh4ooS0leEYlGWRRQp7U6q6KZ6PIyYsV24eB/fxahJ\r\nZWCvZkdJhOk3ISTDIxVXbSw5buTSHfGiy5QSKSJSSxEBPkn21y3QiEXXXey299y6V6NebJUyLMy9\r\nsTfduUMG0ZvnuD3qdjx6tPSKpxdfRWfrV3HXTWdy/3n+pjl0oKF9XyftO/t2jJFKefcaGFGrO2UQ\r\nkSFvPnr13f9RB9xuqAmHjl6teEfYZoiU8Vx++z1HxmfoscfbY9ZZh5ppGLH2moK1NWfGg/qRV4p/\r\nAzoWV4YEbpgaRidBohSId7zBBSJnkEjeGyiGJBmLKrpYkYGX3SJRSvwhMuIbZUhCXo8iYQhgi1n1\r\npBlnRs5HHheQbBnJeY0xVtKPUwZZZUmZKIVljUg+x4UmXt4BJVZSCmhmmCUZqBdsnJHXpo1wuqlJ\r\ndEK+pV6hFKmWyYeBLfkGJE4KSp4phCJ6oYWW/nYRS/Yx6GiXWwbK41OF2mloppqiQwqnCf7SXI7P\r\ngT4q6ahnBmVYlNq9l5FBrP5io5J+7siFFHLCpauGONV61Sgr3ZLJVm/cQQomrzzn7CvYSjuKXLpy\r\nOyaex6ITEAA7” width=“132” height=“33”>\r\n \r\n <td width=“30%”>\r\n <td width=“15%”>\r\n <td width=“12%” style=“BORDER-RIGHT:black 1pt solid;\r\n BORDER-TOP:black 1pt solid;\r\n BORDER-LEFT:black 1pt solid;\r\n BORDER-BOTTOM:black 1pt solid;\r\n COLOR: black;”>\r\n <label width=“100%”\r\n style=“FONT-FAMILY: Tahoma;FONT-SIZE: 8pt;MARGIN-LEFT: 2pt;”>Documento:%%SECUENCIA%%\r\n \r\n \r\n <tr width=“100%”>\r\n <td colspan=“4” width=“100%”> \r\n \r\n \r\n <td width=“35%”>\r\n <td width=“30%”\r\n align=“center”\r\n style=“FONT-FAMILY: Tahoma;FONT-SIZE: 8pt;\r\n BACKGROUND-COLOR:#d5eaff;\r\n BORDER-RIGHT:black 1pt solid;\r\n BORDER-TOP:black 1pt solid;\r\n BORDER-LEFT:black 1pt solid;\r\n BORDER-BOTTOM:black 1pt solid;\r\n COLOR: black;”>\r\n EXPEDIENTE\r\n \r\n <td width=“35%” colspan=“2”>\r\n \r\n \r\n <td width=“35%”>\r\n <td width=“30%”\r\n align=“center”\r\n style=“FONT-FAMILY: Tahoma;FONT-SIZE: 8pt;\r\n BORDER-RIGHT:black 1pt solid;\r\n BORDER-TOP:black 1pt solid;\r\n BORDER-LEFT:black 1pt solid;\r\n BORDER-BOTTOM:black 1pt solid;\r\n COLOR:black;”>\r\n %%NUMERODOCUMENTO%%\r\n \r\n <td width=“35%” colspan=“2”>\r\n \r\n”
numeroDocumento: “EE18000004 - U.T.E.”
secuencia: “1”
margensuperior: 5
byte[] IConversorPdf.CrearEncabezado(byte[] pdf, string html, string numeroDocumento, string secuencia, int margensuperior)
{
Aspose.Pdf.License licensepdf = new Aspose.Pdf.License();
licensepdf.SetLicense(“Aspose.Total.lic”);
licensepdf.Embedded = true;
Stream streamPdf = new MemoryStream();
streamPdf.Write(pdf, 0, pdf.Length);
Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(streamPdf);
Aspose.Pdf.HeaderFooter header = new Aspose.Pdf.HeaderFooter();
html = html.Replace("%%NUMERODOCUMENTO%%", numeroDocumento).Replace("%%SECUENCIA%%", secuencia);
HtmlFragment htmlstring = new HtmlFragment(html);
header.Paragraphs.Add(htmlstring);
header.Margin.Top = margensuperior;
foreach (Page page in pdfDocument.Pages)
{
page.Header = header;
}
Stream stream = new MemoryStream();
pdfDocument.Save(stream);
return ConvertirStreamAArrayBytes(stream);
}
private static byte[] ConvertirStreamAArrayBytes(Stream input)
{
using (MemoryStream ms = new MemoryStream())
{
input.CopyTo(ms);
return ms.ToArray();
}
}
El documento original es este.Informe.zip (8.7 KB)