Проблема с добавлением текстового поля в 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, поэтому ничего не могу предложить.