Member 13480314 Ответов: 0

Проблема с добавлением текстового поля в pdfpcell


Я с помощью itext для генерации редактируемый календарь в формате PDF.

Я пытаюсь добавить текстовое поле в PdfPCell, используя этот код,

//Чтобы создать PdfPCell на определенный день

public PdfPCell getDayCell(Calendar calendar, Locale locale) {
    PdfPCell cell = new PdfPCell();
    cell.setPadding(3);
    // set the background color, based on the type of day
    if (isSunday(calendar))
        cell.setBackgroundColor(BaseColor.GRAY);
    else if (isSpecialDay(calendar))
        cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
    else
        cell.setBackgroundColor(BaseColor.WHITE);
    // set the content in the language of the locale
    Chunk chunk = new Chunk(String.format(locale, "%1$ta", calendar), small);
    chunk.setTextRise(5);
    // a paragraph with the day
    Paragraph p = new Paragraph(chunk);
    // a separator
    p.add(new Chunk(new VerticalPositionMark()));
    // and the number of the day
    p.add(new Chunk(String.format(locale, "%1$te", calendar), normal));
    cell.addElement(p);
    cell.setCellEvent(new MyCellField(locale+""+calendar));
    cell.setFixedHeight(80);
    return cell;
}


// Добавление текстового поля в cellEvent

class MyCellField implements PdfPCellEvent {
protected String fieldname;
public MyCellField(String fieldname) {
    this.fieldname = fieldname;
}
public void cellLayout(PdfPCell cell, Rectangle rectangle, PdfContentByte[] canvases) {

    final PdfWriter writer = canvases[0].getPdfWriter();


    final TextField textField = new TextField(writer, rectangle, fieldname);
    textField.setAlignment(Element.ALIGN_TOP); 
    textField.setOptions(TextField.MULTILINE); 
    try {
        final PdfFormField field = textField.getTextField();
        writer.addAnnotation(field);
    } catch (final IOException ioe) {
        throw new ExceptionConverter(ioe);
    } catch (final DocumentException de) {
        throw new ExceptionConverter(de);
    }
}
}


Когда я визуализирую PDF-файл календаря, фокус ячейки находится вертикально, а не горизонтально. Пожалуйста, помогите мне выяснить, что я упускаю.

Ссылаться

Примечание: Я использую iText5

Что я уже пробовал:

Я уже пробовал,

float textboxheight = 12f;
Rectangle rect = rectangle;
rect.Bottom = rect.Top - textboxheight;


прямоугольник.Внизу отображается ошибка "конечный прямоугольник поля.Дно не может быть назначено".

Richard MacCutchan

Сообщение совершенно ясно, вы не можете установить поле, которое объявлено final; проверьте документацию, чтобы узнать, какие варианты доступны.

Member 13480314

Привет Ричард,

Нашли проблему

Документ = новый документ(размер страницы.А4.поворот ()); ""поворот" ()" вызывает вопрос. Я изменил его как Document document = new Document(PageSize.A4); проблема фокусировки исправлена. Но клетки выходят из PDF-файла. https://ibb.co/g8ZwO6

Richard MacCutchan

Вам нужно сделать что-то, чтобы изменить размер содержимого, чтобы оно помещалось в пределах полей размера страницы. Я не знаю iTextSharp, поэтому ничего не могу предложить.

0 Ответов