Saltar al contenido

Texto alineado a la derecha en PdfPCell

Mantén la atención porque en este tutorial encontrarás la respuesta que buscas.Este escrito fue evaluado por nuestros expertos para garantizar la calidad y exactitud de nuestro contenido.

Solución:

Soy el desarrollador original de iText y el problema que está experimentando se explica en mi libro.

estas mezclando modo de texto y modo compuesto.

En modo de textotu creas el PdfPCell con un Phrase como el parámetro del constructor, y define la alineación en el nivel de la celda. Sin embargo, estás trabajando en modo compuesto. Este modo se activa tan pronto como utilice el addElement() método. En modo compuesto, se ignora la alineación definida en el nivel de la celda (lo que explica su problema). En su lugar, se utiliza la alineación de los elementos separados.

¿Cómo resolver tu problema?

O trabaja en modo de texto agregando tu Phrase a la celda de una manera diferente. O trabajar en modo compuesto y usa un Paragraph para el que defina la alineación.

La ventaja de modo compuesto sobre modo de texto es que diferentes párrafos en la misma celda pueden tener diferentes alineaciones, mientras que solo puede tener una alineación en modo de texto. Otra ventaja es que puedes añadir algo más que texto: también puedes añadir imágenes, listas, tablas,… Una ventaja de modo de texto es la velocidad: se necesita menos tiempo de procesamiento para tratar el contenido de una celda.

private static PdfPCell PhraseCell(Phrase phrase, int align)

    PdfPCell cell = new PdfPCell(phrase);
    cell.BorderColor = BaseColor.WHITE;
    // cell.VerticalAlignment = PdfCell.ALIGN_TOP;
    //cell.VerticalAlignment = align;
    cell.HorizontalAlignment = align;
    cell.PaddingBottom = 2f;
    cell.PaddingTop = 0f;
    return cell;

Aquí está mi derivación de la respuesta del usuario 2660112: un método para devolver una celda para insertarla en una tabla con borde y color de fondo, y una variedad similar, pero sin borde/sin color:

private static PdfPCell GetCellForBorderedTable(Phrase phrase, int align, BaseColor color)

    PdfPCell cell = new PdfPCell(phrase);
    cell.HorizontalAlignment = align;
    cell.PaddingBottom = 2f;
    cell.PaddingTop = 0f;
    cell.BackgroundColor = color;
    cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
    return cell;


private static PdfPCell GetCellForBorderlessTable(Phrase phrase, int align)

    PdfPCell cell = new PdfPCell(phrase);
    cell.HorizontalAlignment = align;            
    cell.PaddingBottom = 2f;
    cell.PaddingTop = 0f;
    cell.BorderWidth = PdfPCell.NO_BORDER;
    cell.VerticalAlignment = PdfPCell.ALIGN_CENTER;
    return cell;

Estos se pueden llamar así:

Font timesRoman9Font = FontFactory.GetFont(FontFactory.TIMES_ROMAN, 9, BaseColor.BLACK);
Font timesRoman9BoldFont = FontFactory.GetFont(FontFactory.TIMES_BOLD, 9, BaseColor.BLACK);

Phrase phrasesec1Heading = new Phrase("Duckbills Unlimited", timesRoman9BoldFont);
PdfPCell cellSec1Heading = GetCellForBorderedTable(phrasesec1Heading, Element.ALIGN_LEFT, BaseColor.YELLOW);
tblHeadings.AddCell(cellSec1Heading);

Phrase phrasePoisonToe = new Phrase("Poison Toe Toxicity Level (Metric Richter Scale, adjusted for follicle hue)", timesRoman9Font);
PdfPCell cellPoisonToe = GetCellForBorderlessTable(phrasePoisonToe, Element.ALIGN_LEFT);
tblFirstRow.AddCell(cellPoisonToe);

Reseñas y valoraciones del tutorial

Si para ti ha sido de utilidad nuestro artículo, te agradeceríamos que lo compartas con más seniors de esta forma nos ayudas a extender nuestra información.

¡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 *