Текст не получает выравнивание по центру горизонтально в itext? [Дубликат]

Это старый вопрос, но ответа на правильный ответ у него нет, поэтому:

Вы пробовали jQuery-File-Upload ?

Здесь является примером из ссылки выше -> 1 , которая может решить вашу проблему:

$('#fileupload').fileupload({
    add: function (e, data) {
        var that = this;
        $.getJSON('/example/url', function (result) {
            data.formData = result; // e.g. {id: 123}
            $.blueimp.fileupload.prototype
                .options.add.call(that, e, data);
        });
    } 
});

17
задан colincameron 28 November 2012 в 16:56
поделиться

4 ответа

Я оригинальный разработчик iText, и проблема, с которой вы столкнулись, объясняется в моей книге .

Вы смешиваете текстовый режим и композитный режим.

В текстовом режиме вы создаете PdfPCell с Phrase в качестве параметра конструктора, и вы определяете выравнивание на уровне ячейки. Однако вы работаете в сложном режиме. Этот режим запускается, как только вы используете метод addElement(). В композитном режиме выравнивание, определенное на уровне ячейки, игнорируется (что объясняет вашу проблему). Вместо этого используется выравнивание отдельных элементов.

Как решить вашу проблему?

Либо работайте в текстовом режиме, добавив ваш Phrase в ячейку другим способом. Или работайте в композитном режиме и используйте Paragraph, для которого вы определяете выравнивание.

Преимущество композитного режима в текстовом режиме состоит в том, что разные абзацы в одной и той же ячейке могут иметь разные выравнивания, тогда как вы можете имеют одно выравнивание в текстовом режиме. Другим преимуществом является то, что вы можете добавить больше, чем просто текст: вы также можете добавлять изображения, списки, таблицы ... Преимущество текстового режима - скорость: для обработки содержимого ячейки требуется меньше времени обработки.

22
ответ дан Bruno Lowagie 26 August 2018 в 07:49
поделиться

Возможно, это потому, что вы смешиваете разные способы добавления ячеек? Вы пытались явно создать объект ячейки, массируя его, но вы хотите добавить его для каждой ячейки?

Еще одна вещь, которую вы могли бы попробовать, - установить вертикальное выравнивание, а также горизонтальное.

-1
ответ дан aledford 26 August 2018 в 07:49
поделиться

Вот мой вывод ответа пользователя2660112 - один метод, чтобы вернуть ячейку для вставки в граничную и фоновую таблицу и аналогичный, но без полей / бесцветный сорт:

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;
}

Они могут затем называть так:

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);
2
ответ дан B. Clay Shannon 26 August 2018 в 07:49
поделиться
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;
}
10
ответ дан user 26 August 2018 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: