1

我有一个使用 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

4

0 回答 0