我正在尝试生成一个字母,留下一个空白点,然后在其顶部粘贴地址,具体取决于信封窗口的位置。
所以我开始这样做:
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();
我希望能够在这些坐标处添加一些文字,但我无法弄清楚如何......有人知道这样做的方法吗?
答案 0 :(得分:24)
找到答案“Here”。 (以下是来自Yannick Smits的引用答案)
===============
试试这个:
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();
SetSimpleColumn的参数是:
答案 1 :(得分:18)
您还可以将ContentByte与文本矩阵一起使用,以便随时随地绘制文本。
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();
好处是,如果您不必绘制文本框的完整大小。使用“简单列”,您将在文档上绘制一个矩形,并将文本放在其中。使用ContentByte,您可以躲避矩形,并自行定位文本。
答案 2 :(得分:0)
非常感谢您的数据,我很喜欢,但我的英语很差,抱歉。
这是我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();
}
}