Saltar al contenido

Agregar una nueva línea en iTextSharp

Agradeceríamos tu ayuda para extender nuestros ensayos en referencia a las ciencias de la computación.

Solución:

Hay dos formas principales de trabajar con texto en iTextSharp, ya sea a través de abstracciones como Paragraph y Phrase o ejecutando comandos manualmente usando un PdfContentByte. Las abstracciones manejarán cosas como márgenes, saltos de línea y espacios, mientras que la ruta manual depende de usted. Realmente no puedes mezclar los dos, que es lo que estás haciendo. Recomiendo encarecidamente usar las abstracciones en lugar de la ruta manual, a menos que tenga una necesidad específica de control granular. A continuación se muestra una muestra que muestra ambos.

Pero para responder a su pregunta específicamente, los comandos de PDF sin formato (que está utilizando) dibujan texto en ciertos x,y coordenadas de izquierda a derecha y no admiten el concepto de “retornos” o “saltos de línea”. Para hacer esto, debe mover manualmente el cursor de texto actual a una nueva línea. Vea el código a continuación para ver una muestra de eso.

        string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.pdf");
        using (FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None)) 
            using (Document doc = new Document(PageSize.LETTER)) 
                using (PdfWriter writer = PdfWriter.GetInstance(doc, fs)) 
                    doc.Open();

                    //This creates two lines of text using the iTextSharp abstractions
                    doc.Add(new Paragraph("This is Paragraph 1"));
                    doc.Add(new Paragraph("This is Paragraph 2"));

                    //This does the same as above but line spacing needs to be calculated manually
                    PdfContentByte cb = writer.DirectContent;
                    cb.SaveState();
                    cb.SetColorFill(BaseColor.BLACK);
                    cb.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 12f);
                    cb.BeginText();
                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "This is cb1", 20, 311, 0);
                    cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "This is cb2", 20, 291, 0);//Just guessing that line two should be 20px down, will actually depend on the font
                    cb.EndText();
                    cb.RestoreState();
                    doc.Close();
                
            
        

Prueba algo como esto:

document.Add(new Chunk("n"));

document.Add(new Paragraph(" ")); funciona bien para mí. Recuerda el Paragraph declaración agrega automáticamente un salto de línea. Todo lo que tienes que hacer es darle algo para renderizar. En este caso, un espacio funcionará bien.

Si conservas algún reparo y capacidad de ascender nuestro escrito te recordamos añadir un exégesis y con mucho placer lo estudiaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *