visual studio license itextsharp

studio - itextsharp pdf



AƱadiendo texto posicionado absoluto (3)

Estoy tratando de generar una carta, dejando un espacio vacío y luego pegar sobre ella la dirección, dependiendo de dónde va a estar la ventana del sobre.

Así que empiezo haciendo esto:

Document doc = new Document(PageSize.LETTER, 72, 72, 72, 72); var w = PdfWriter.GetInstance(doc, output); Font font = FontFactory.GetFont("arial", 10); doc.Open(); doc.Add(new Paragraph("date", font) { SpacingAfter = 5 }); doc.Add(new Paragraph("/n/n/n/n/n/n", font));//empty spot doc.Add(new Paragraph("long/n paragraph/ns panning/ multiple/n lines/n", font) { SpacingAfter = 5 }); doc.Add(new Paragraph("long/n paragraph/ns panning/ multiple/n lines/n", font) { SpacingAfter = 5 }); doc.Add(new Paragraph("long/n paragraph/ns panning/ multiple/n lines/n", font) { SpacingAfter = 5 }); doc.Add(new Paragraph("long/n paragraph/ns panning/ multiple/n lines/n", font) { SpacingAfter = 5 }); doc.Add(new Paragraph("long/n paragraph/ns panning/ multiple/n lines/n", font) { SpacingAfter = 5 }); float llx = 63f, lly = 450f, urx = 387f, ury = 531f; ?? Somehow add "name/n address line 1/n address line2/n city state zip" doc.Close();

Esperaba poder agregar un texto en esas coordenadas, pero no pude averiguar cómo ... ¿alguien sabe una manera de hacerlo?


Encontré la respuesta " Here ". (A continuación se cita la respuesta de Yannick Smits )

===============

Prueba esto:

ColumnText ct = new ColumnText(cb); Phrase myText = new Phrase("TEST paragraph/nNewline"); ct.SetSimpleColumn(myText, 34, 750, 580, 317, 15, Element.ALIGN_LEFT); ct.Go();

Los parámetros de SetSimpleColumn son:

  1. la frase
  2. inferior izquierda x
  3. abajo a la izquierda
  4. superior derecha-x (llx + ancho)
  5. superior derecha y (lly + altura)
  6. líder (la cantidad de espacio en blanco entre las líneas de impresión)
  7. alineación.

Muchas gracias por sus datos, me encanta pero mi inglés es muy pobre, lo siento.

Este es mi código para iTextSharp etiquetas iTextSharp :

public void impriItex() { iTextSharp.text.Font fontH1 = new iTextSharp.text.Font(FUENTE_BASE, 14, iTextSharp.text.Font.ITALIC); iTextSharp.text.Font fuente = new iTextSharp.text.Font(FUENTE_BASE, 12, iTextSharp.text.Font.NORMAL); iTextSharp.text.Font FUENTE_CABECERA_TABLA = new iTextSharp.text.Font(FUENTE_BASE, 10, iTextSharp.text.Font.BOLD); dataGridViewOculta.DataSource = fun.CargaDato(cargaVelores); dataGridViewTotales.DataSource = fun.CargaDato(cargaVelores); dataGridViewVentas.DataSource = fun.CargaDato(cargaVelores); //Letras //Tabla PdfPTable pdfTable = new PdfPTable(6); pdfTable.DefaultCell.Padding = 2; pdfTable.WidthPercentage = 40; pdfTable.HorizontalAlignment = Element.ALIGN_CENTER; pdfTable.DefaultCell.BorderWidth = 1; //cabeceras foreach (DataGridViewColumn column in dataGridViewOculta.Columns) { PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText, FUENTE_CABECERA_TABLA)); cell.HorizontalAlignment = Element.ALIGN_CENTER; cell.BackgroundColor = new iTextSharp.text.BaseColor(210, 240, 240); pdfTable.AddCell(cell); } //datos foreach (DataGridViewRow row in dataGridViewOculta.Rows) { try { foreach (DataGridViewCell cell in row.Cells) { String texto = cell.Value.ToString(); String textovacio = texto.Replace("00:00:00", " "); PdfPCell cosa = new PdfPCell(new Phrase(textovacio, fuente)); cosa.HorizontalAlignment = Element.ALIGN_CENTER; pdfTable.AddCell(cosa); pdfTable.HorizontalAlignment = Element.ALIGN_CENTER; } } catch { return; } } //Exporting to PDF string folderPath = "C://PDFs//"; if (!Directory.Exists(folderPath)) { Directory.CreateDirectory(folderPath); } using (FileStream stream = new FileStream(folderPath + "Etiquetas.pdf", FileMode.Create)) { Document pdfDoc = new Document(PageSize.A4, 0f, 0f, 0f, 0f); PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream); PdfPTable tabla = new PdfPTable(1); pdfDoc.Open(); PdfContentByte cb = writer.DirectContent; PdfContentByte lineas = writer.DirectContent; for (int fila = 0; fila < dataGridViewVentas.Rows.Count - 1; fila++) { for (int col = 0; col < dataGridViewVentas.Rows[fila].Cells.Count; col++) labelTitulo.Text = "Etiquetas"; Cantidad = dataGridViewVentas.Rows[fila].Cells[0].Value.ToString(); IdColor = dataGridViewVentas.Rows[fila].Cells[1].Value.ToString(); IdCategoria = dataGridViewVentas.Rows[fila].Cells[2].Value.ToString(); NomCategoria = dataGridViewVentas.Rows[fila].Cells[3].Value.ToString(); Colores = dataGridViewVentas.Rows[fila].Cells[4].Value.ToString(); CodigoDeGrupo = dataGridViewVentas.Rows[fila].Cells[5].Value.ToString(); lblNombreSocio.Text = IdColor + ":" + Cantidad; String espacio = " "; Paragraph linea = new Paragraph("________________________________________________________", fuente); Paragraph lineaDoble = new Paragraph(Cantidad, fuente); Paragraph SocioPar = new Paragraph("Color:" + lblNombreSocio.Text, fuente); Paragraph SociedadPar = new Paragraph("Categoria: " + NomCategoria, fuente); Paragraph Titulo = new Paragraph(labelTitulo.Text, fontH1); Paragraph parrafoEspacio = new Paragraph(" ", fuente); linea.Alignment = Element.ALIGN_CENTER; lineaDoble.Alignment = Element.ALIGN_CENTER; Titulo.Alignment = Element.ALIGN_CENTER; SocioPar.Alignment = Element.ALIGN_CENTER; SociedadPar.Alignment = Element.ALIGN_CENTER; pdfTable.HorizontalAlignment = Element.ALIGN_CENTER; pdfDoc.Add(linea); pdfDoc.Add(Titulo); pdfDoc.Add(lineaDoble); pdfDoc.Add(parrafoEspacio); pdfDoc.Add(SocioPar); pdfDoc.Add(SociedadPar); // pdfDoc.Add(pdfTable);} for (int x = 0; x < Convert.ToInt32(Cantidad); x++) { cb.Rectangle(posx, posy, 40f, 25f); lineas.SetLineWidth(1); lineas.MoveTo(posx+20, posy+15); lineas.LineTo(posx+20,posy); lineas.Stroke(); // lineas. lineas.MoveTo(posx + 20, posy+10 ); lineas.LineTo(posx, posy + 10); lineas.MoveTo(posx + 40, posy + 10); lineas.LineTo(posx, posy + 10); lineas.Stroke(); //texto !!!!!!!!!!! lineas.BeginText(); lineas.SetFontAndSize(FUENTE_BASE, 6); lineas.SetTextMatrix(posx, posy); lineas.ShowText(IdColor); lineas.EndText(); //tabla.AddCell("prueba"); // pdfDoc.Add(tabla); Chunk c = new Chunk(x.ToString()); // iTextSharp.text.Rectangle rect = new iTextSharp.text.Rectangle(posx, 650f, 25f, 10f); // cb.Rectangle(rect); cb.Stroke(); float nuevo = posx + 42f; posx = nuevo; if (posx > 500f) { posx = 20; posy = posy-35f; } } pdfDoc.NewPage(); posx = 10f; posy = 700; } pdfDoc.Close(); stream.Close(); } }


También puede usar un ContentByte con una Matriz de texto para dibujar texto donde desee.

PdfContentByte cb = writer.DirectContent; cb.BeginText(); BaseFont f_cn = BaseFont.CreateFont("c://windows//fonts//calibri.ttf", BaseFont.CP1252, BaseFont.NOT_EMBEDDED); cb.SetFontAndSize(f_cn, 6); cb.SetTextMatrix(475, 15); //(xPos, yPos) cb.ShowText("Some text here and the Date: " + DateTime.Now.ToShortDateString()); cb.EndText();

El beneficio es que si no tiene que dibujar el tamaño completo del cuadro, el texto entrará. Con Columna simple, está dibujando un rectángulo en el documento y posicionando el texto dentro de él. Con ContentByte, usted esquiva el rectángulo y coloca el texto por sí mismo.