2016-07-31 9 views
1

Я использую iText 7.0.0 (вкус Java), и кажется, что ячейка таблицы HorizontalAlignment игнорируется, потому что ни CENTER, ни RIGHT не работают. Можете ли вы воспроизвести это?Столбец Горизонтальное изображение игнорируется/нарушается

see the pdf screenshoot

и код для воспроизведения:

private static void brokenTableCellHorizontalAlignmentPdf(OutputStream output) throws IOException { 
    PdfWriter writer = new PdfWriter(output); 
    PdfDocument pdf = new PdfDocument(writer); 
    Document document = new Document(pdf); 
    PdfFont font = PdfFontFactory.createFont(FontConstants.HELVETICA); 
    Table table = new Table(new float[] {15f, 16f, 4f}).setWidthPercent(100); 
    for (int y = 1; y <= 3; ++y) { 
     for (int x = 1; x <= 3; ++x) { 
      table.addCell(
        new Cell() 
          .setVerticalAlignment(VerticalAlignment.MIDDLE) 
          .setHorizontalAlignment(HorizontalAlignment.CENTER) 
          .add(new Paragraph(String.format("(%d, %d)%s", y, x, x == 1 ? "\n\ntest" : "")) 
            .setFont(font) 
            .setFontSize(8))); 
     } 
    } 
    document.add(table); 
    document.close(); 
} 
+0

Привет, я призываю вас принять ответ Бруно на этот вопрос, поскольку я нахожу его действительно тщательным, и было бы полезно найти ответ другим людям, которые столкнулись с этим вопросом. –

ответ

2

Пожалуйста, обратите внимание на CellAlignment Например:

public void createPdf(String dest) throws IOException { 
    //Initialize PDF document 
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 

    // Initialize document 
    Document document = new Document(pdf); 
    Table table = new Table(new float[]{2, 1, 1}); 
    table.setWidthPercent(80); 
    table.setHorizontalAlignment(HorizontalAlignment.CENTER); 
    table.setTextAlignment(TextAlignment.CENTER); 
    table.addCell(new Cell(1, 3).add("Cell with colspan 3")); 
    table.addCell(new Cell(2, 1).add("Cell with rowspan 2") 
     .setTextAlignment(TextAlignment.RIGHT)); 
    table.addCell("row 1; cell 1"); 
    table.addCell("row 1; cell 2"); 
    table.addCell("row 2; cell 1"); 
    table.addCell("row 2; cell 2"); 
    Cell cell = new Cell() 
     .add(new Paragraph("Left").setTextAlignment(TextAlignment.LEFT)) 
     .add(new Paragraph("Center")) 
     .add(new Paragraph("Right").setTextAlignment(TextAlignment.RIGHT)); 
    table.addCell(cell); 
    cell = new Cell().add("Middle") 
     .setVerticalAlignment(VerticalAlignment.MIDDLE); 
    table.addCell(cell); 
    cell = new Cell().add("Bottom") 
     .setVerticalAlignment(VerticalAlignment.BOTTOM); 
    table.addCell(cell); 
    document.add(table); 
    document.close(); 
} 

В результате PDF при запуске этого примера выглядит следующим образом:

enter image description here

Там нет никаких проблем с выравниванием, ни вертикальным, ни горизонтальным, ни выравниванием текста.

1

О фигу! Посмотрев на другой ответ (который указал на http://gitlab.itextsupport.com/itext7/samples/blob/develop/publications/highlevel/src/main/java/com/itextpdf/highlevel/chapter05/C05E03_CellAlignment.java), мы должны теперь использовать setTextAlignment. Как и в:

new Paragraph(String.format("(%d, %d)%s", y, x, x == 1 ? "\n\ntest" : "")) 
    .setFont(font) 
    .setFontSize(8) 
    .setTextAlignment(TextAlignment.CENTER)