我有一个使用 c# 和 itext7 的 windows 形式的应用程序。我以 pdf 格式创建发票,并且 pdf 布局很好,但是当我发送要在点阵打印机 EPSON TM-U220 中打印的文件时,字体模糊,如下图所示:
生成pdf的整个codo是:FontProgram fontProgram = FontProgramFactory.CreateFont(fuente); PdfFont 字体 = PdfFontFactory.CreateFont(fontProgram);
//PdfFont font = PdfFontFactory.CreateFont(StandardFonts.COURIER, PdfEncodings.UTF8);
Table tabla = new Table(1).UseAllAvailableWidth().SetFixedLayout();
Cell celda = new Cell().Add(new Paragraph("FEDERACIÓN NICARAGUENSE DE COOPERATIVAS DE TAXI").SetFontSize(7).SetFont(font))
.SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("FENICOOTAXI, R.L.").SetFontSize(16).SetFont(font))
.SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
conDataBase.Open();
MySqlDataReader cabecera;
MySqlCommand cmd = new MySqlCommand(consulta, conDataBase);
cabecera = cmd.ExecuteReader();
while (cabecera.Read())
{
suma = cabecera["Suma"].ToString();
descuento = cabecera["Descuento"].ToString();
sub_total = cabecera["SubTotal"].ToString();
iva = cabecera["Iva"].ToString();
total_pagar = cabecera["Total"].ToString();
cobro_original = cabecera["Original"].ToString();
ahorro_total = cabecera["Ahorro"].ToString();
vendedor = cabecera["Vendedor"].ToString();
notas = cabecera["notas"].ToString();
factura_pdf = cabecera["Ref"].ToString() + ".pdf";
celda = new Cell().Add(new Paragraph("SUCURSAL " + cabecera["Sucursal"].ToString())
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("Bo. Martha Quezada CST 1C al Este")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("RUC J0810000002960 - Tel 2222 - 5001")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("AUT - DGI: ASFC - 04 - 0126 - 09 - 2013 - 2")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
celda = new Cell().Add(new Paragraph(cabecera["Fecha"].ToString())
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(cabecera["Factura"].ToString())
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(cabecera["Cliente"].ToString())
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
}
celda = new Cell().Add(new Paragraph("--------------------------------")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("Cant Descripción Precio")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
SolidLine linea = new SolidLine(1f);
Color magentaColor = new DeviceCmyk(0f, 1f, 0f, 0f);
linea.SetColor(magentaColor);
celda = new Cell().Add(new Paragraph("--------------------------------")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
conDataBase.Close();
conDataBase.Open();
MySqlDataReader detalle;
MySqlCommand cmd2 = new MySqlCommand(consulta2, conDataBase);
detalle = cmd2.ExecuteReader();
Table tabla_detalle = new Table(1).UseAllAvailableWidth().SetFixedLayout();
Cell celda_detalle = new Cell();
while (detalle.Read())
{
celda_detalle = new Cell().Add(new Paragraph(detalle["Descripcion"].ToString())
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.LEFT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda_detalle = new Cell().Add(new Paragraph(detalle["Precio"].ToString())
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda_detalle = new Cell().Add(new Paragraph(detalle["Descu"].ToString())
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
}
celda = new Cell().Add(new Paragraph("--------------------------------")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda_detalle = new Cell().Add(new Paragraph("Suma: " + suma)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda_detalle = new Cell().Add(new Paragraph("Desc: " + descuento)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda_detalle = new Cell().Add(new Paragraph("Sub total " + sub_total)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda_detalle = new Cell().Add(new Paragraph("IVA " + iva)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda_detalle = new Cell().Add(new Paragraph("Total a Pagar: " + total_pagar)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda = new Cell().Add(new Paragraph("--------------------------------")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda_detalle = new Cell().Add(new Paragraph("Su cobro original era de: " + cobro_original)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda_detalle = new Cell().Add(new Paragraph("Su ahorro total es de: " + ahorro_total)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.RIGHT).SetMargins(0f, 0f, 0f, 0f).SetPadding(0f)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda_detalle);
celda = new Cell().Add(new Paragraph("--------------------------------")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(vendedor)
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("*** NO SE ACEPTAN DEVOLUCIONES ***")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("*PARTES ELÉCTRICAS NO TIENEN GARANTÍA*")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("*SI EL PAGO ES CON TARJETA, NO SE HACE*")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("*DEVOLUCIÓN, SOLO CAMBIO DEL PRODUCTO*")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("Acepto los términos y las condiciones")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.LEFT)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("referidos en este documento y declaro")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.LEFT)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("que he recibido la mercadería a")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.LEFT)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("satisfaccion")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.LEFT)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("----------------------")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("Firma Cliente")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(8).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("COTIZACIONES Y VENTAS VIRTUALES")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("8742-9887 8873-5507")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph(" ")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("QUEJAS Y SUGERENCIAS")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("8826-8622")
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("Notas: " + notas)
.SetFontSize(9).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
celda = new Cell().Add(new Paragraph("")
.SetFontSize(12).SetFont(font)).SetTextAlignment(TextAlignment.CENTER)
.SetBorder(Border.NO_BORDER);
tabla.AddCell(celda);
conDataBase.Close();
PdfWriter pw = new PdfWriter(ruta + factura_pdf);
PdfDocument pdf = new PdfDocument(pw);
Rectangle rectangle_FCT = new Rectangle(0, 0, 219, 100000.0F);
PageSize FCT_TPL = new PageSize(rectangle_FCT);
Document document = new Document(pdf, FCT_TPL);
document.SetMargins(0, 0, 0, 0);
float necessaryWidth = 219f;
LayoutResult esquema = tabla.CreateRendererSubTree().SetParent(document.GetRenderer()).Layout(new LayoutContext(new LayoutArea(1, new Rectangle(necessaryWidth, 100000))));
float alto_tabla = esquema.GetOccupiedArea().GetBBox().GetHeight();
Document doc2 = new Document(pdf, new PageSize(necessaryWidth + 10 * 2, alto_tabla + 10 * 2));
doc2.SetMargins(10, 10, 10, 10);
tabla.SetKeepTogether(true);
doc2.Add(tabla);
doc2.Close();
//imprimir(ruta + factura_pdf);
//Actualizar_Cola(factura, 0, 0, 0, null, 0, 0, 0);
//EliminarArchivo(ruta + factura_pdf);
System.Diagnostics.Process.Start(ruta + factura_pdf);
pdf文件在这里: https ://file.lu/d/Hf0