テーブルで作成したフォームがあります。テーブルのセルの横にチェックボックスがあります。これらのチェックボックスには、チェックする必要があるものと、チェックしないものがあります。
私はググって、テーブルにチェックボックスを配置する方法を思いつきました。これは、いくつかの表セルを作成する私の方法です。
private void createFourColumnBody(String[] rowLabels, PdfPTable table) throws DocumentException {
PdfFormField checkboxGroupField = PdfFormField.createCheckBox(writer);
for (String label : rowLabels) {
PdfPCell cell = table.getDefaultCell();
cell = new PdfPCell(new Paragraph(label));
cell.setHorizontalAlignment(Element.ALIGN_LEFT);
table.addCell(cell);
cell = new PdfPCell(table.getDefaultCell());
cell.setCellEvent(new CellField(writer, checkboxGroupField, true));
table.addCell(cell);
cell = new PdfPCell(table.getDefaultCell());
cell.setCellEvent(new CellField(writer, checkboxGroupField, false));
table.addCell(cell);
cell = new PdfPCell(new Paragraph(" "));
table.addCell(cell);
}
getDocument().add(table);
writer.addAnnotation(checkboxGroupField);
}
これは、チェックボックスを作成するために呼び出されるクラスです。
protected class CellField implements PdfPCellEvent {
private PdfFormField parent;
private String partialFieldName;
private PdfWriter writer;
private boolean checked;
public CellField(PdfWriter writer, PdfFormField parent, boolean checked) {
this.writer = writer;
this.parent = parent;
this.checked = checked;
}
public void cellLayout(PdfPCell cell, Rectangle rect, PdfContentByte[] cb) {
try {
createCheckboxField(rect);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
private void createCheckboxField(Rectangle rect) throws IOException, DocumentException {
RadioCheckField rf = new RadioCheckField(writer, new Rectangle(rect.getLeft(2), rect.getBottom(2),
rect.getRight(2), rect.getTop(2)), partialFieldName, "");
rf.setChecked(checked);
rf.setBorderColor(GrayColor.GRAYBLACK);
rf.setBackgroundColor(GrayColor.GRAYWHITE);
rf.setCheckType(RadioCheckField.TYPE_CHECK);
parent.addKid(rf.getCheckField());
}
}
最初の方法では、チェックされたブール値が最初のチェックボックスで true 、2 番目のチェックボックスで false としてマークされていることがわかりますが、常にチェックボックスがチェックされた状態で pdf が作成されます。チェックマークを外して四角形を描いてみましたが、だめでした。rf.setChecked(false)
あるべきように見えるように仕事をするために何が起こる必要があるか。ありがとう。