Tema destacado: Nueva página de elhacker.net en Google+ 
Autor
|
Tema: Ayuda con tipo de letra al exportar un datagrid a pdf (Leído 854 veces)
|
joalbela
Desconectado
Mensajes: 30
|
Hola amigos, tengo un problema lo que pasa es que genere un datagrid y luego lo exporte a pdf y me gustaria poder cambiarle el estilo de la letra por una curier new ya que no he podido hacerlo.
Muchas gracias
|
|
|
|
|
En línea
|
Jorge MB
|
|
|
Shell Root
Desconectado
Mensajes: 2.456
Alex Jurado
|
Y como hicisteis para exportarlo? Alguna librería u objeto?
|
|
|
|
|
En línea
|
 ---
|
|
|
joalbela
Desconectado
Mensajes: 30
|
private void btnExportar_Click(object sender, EventArgs e) { DateTime hora = DateTime.Now; string fcha_ttal = Convert.ToDateTime(hora).Day + "/" + Convert.ToDateTime(hora).Month + "/" + Convert.ToDateTime(hora).Year; Document doc = new Document(PageSize.A3, 9, 9, 10, 10); string filename = "C:\\Temp\\Listado Total.pdf"; iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(@"C:\Mis documentos\Biblia_productos\Biblia_productos\Images\marion.JPG"); jpg.Alignment = iTextSharp.text.Image.ALIGN_LEFT ; Chunk tamaño = new Chunk(" LISTA DE PRODUCTOS CODIFICADOS EN " + fcha_ttal + "", FontFactory.GetFont("COURIER", 12)); try { FileStream file = new FileStream (filename, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); PdfWriter.GetInstance(doc, file); doc.Open(); doc.Add(new Paragraph(tamaño)); doc.Add(jpg); GenerarDocumento(doc); Process.Start(filename); } catch (Exception ex) { MessageBox.Show(ex.Message); } doc.Close(); } //Función que genera el documento Pdf public void GenerarDocumento(Document document) { PdfPTable datatable = new PdfPTable(dataGridView1.ColumnCount); datatable.DefaultCell.Padding = 1; float[] headerwidths = GetTamañoColumnas(dataGridView1); datatable.SetWidths(headerwidths); datatable.WidthPercentage = 100; datatable.DefaultCell.BorderWidth = 3; datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; for (int i = 0; i < dataGridView1.ColumnCount; i++) { datatable.AddCell(dataGridView1.Columns[i].HeaderText); } datatable.HeaderRows = 0; datatable.DefaultCell.BorderWidth = 1; for (int i = 0; i < dataGridView1.RowCount - 1; i++) { for (int j = 0; j < dataGridView1.ColumnCount; j++) { datatable.AddCell(dataGridView1[j, i].Value.ToString()); //string nmbre_prdcto = datatable.AddCell(dataGridView1[j, i].Value.ToString()); //string primera = nmbre_prdcto.Substring(1, 1); } datatable.CompleteRow(); } document.Add(datatable); } public float[] GetTamañoColumnas(DataGridView dg) { float[] values = new float[dg.ColumnCount]; for (int i = 0; i < dg.ColumnCount; i++) { values[i] = (float)dg.Columns[i].Width; } return values; } ESTE FUE EL CODIGO CON EL QUE EXPORTE EL DATAGRID AL PDF
|
|
|
|
« Última modificación: 9 Marzo 2011, 14:48 por Novlucker »
|
En línea
|
Jorge MB
|
|
|
|
seba123neo
|
trata de poner el codigo fuente entre el geshi asi es mas claro de leer. no pusiste que libreria estas usando, porque cuando haces un "new Document" o "new PdfPTable" esos metodos forman parte de una libreria externa al visual studio que debes estar usando. por lo que me acabo de fijar la libreria se llama iTextSharpbusca en internet que hay mucho de esta libreria, fijate esto: iTextSharp - Working with Fontssaludos.
|
|
|
|
« Última modificación: 8 Marzo 2011, 22:50 por seba123neo »
|
En línea
|
Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo. Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
|
|
|
joalbela
Desconectado
Mensajes: 30
|
public void GenerarDocumento(Document document) { PdfPTable datatable = new PdfPTable(dataGridView1.ColumnCount); datatable.DefaultCell.Padding = 1; float[] headerwidths = GetTamañoColumnas(dataGridView1); datatable.SetWidths(headerwidths); datatable.WidthPercentage = 100; datatable.DefaultCell.BorderWidth = 3; datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT; for (int i = 0; i < dataGridView1.ColumnCount; i++) { datatable.AddCell(dataGridView1.Columns[i].HeaderText); } datatable.HeaderRows = 0; datatable.DefaultCell.BorderWidth = 1; for (int i = 0; i < dataGridView1.RowCount - 1; i++) { for (int j = 0; j < dataGridView1.ColumnCount; j++) { datatable.AddCell(dataGridView1[j, i].Value.ToString()); //string nmbre_prdcto = datatable.AddCell(dataGridView1[j, i].Value.ToString()); //string primera = nmbre_prdcto.Substring(1, 1); } datatable.CompleteRow(); } document.Add(datatable); } public float[] GetTamañoColumnas(DataGridView dg) { float[] values = new float[dg.ColumnCount]; for (int i = 0; i < dg.ColumnCount; i++) { values[i] = (float)dg.Columns[i].Width; } return values; } claro uso ITextSharp
|
|
|
|
« Última modificación: 9 Marzo 2011, 15:02 por Novlucker »
|
En línea
|
Jorge MB
|
|
|
|
seba123neo
|
no hacia falta que hagas otro post, podes editar el otro.
el geshi para C# es [ code=csharp] [ /code]
|
|
|
|
« Última modificación: 8 Marzo 2011, 23:06 por seba123neo »
|
En línea
|
Mucha gente, especialmente la ignorante desea castigarte por decir la verdad, por ser correcto, por ser tú. Nunca te disculpes por ser correcto, o por estar años delante de tu tiempo. Si estas en lo cierto, y lo sabes, que hable tu razón. Incluso si eres una minoria de uno solo, la verdad sigue siendo la verdad. M. Gandhi
|
|
|
|
|
|
|