我正在使用iText生成PDF并希望包含iText表单和TextFields,以便用户可以通过电子方式填写PDF表单,而不是将其打印出来。
我已按照此处的示例进行操作:http://itextpdf.com/examples/iia.php?id=161
在这里:http://itextpdf.com/examples/iia.php?id=162
到目前为止,我的Landscape PDF上有一个TextField,我可以点击并输入文字。
我有两个问题:
输入文本的旋转是最让我烦恼的事情。我已经尝试在单元格和TextField上设置旋转,但这似乎没有效果。
有什么建议吗?
由于
这是我的代码:
int rotation = document.getPageSize().getRotation();
PdfFormField pdfForm = PdfFormField.createEmpty(docWriter);
coverSheetPdfForm.setFieldName("Form");
coverSheetPdfForm.setRotate(rotation);
...
cell = new PdfPCell(borderedTable("Cell Title:", tblHeadingFont, "", borderColor));
cell.setColspan(1);
cell.setPadding(5f);
cell.setBorderWidth(0f);
cell.setHorizontalAlignment(PdfPCell.ALIGN_LEFT);
cell.setMinimumHeight(100f);
TextField textField = new TextField(docWriter, new Rectangle(50, 50,rotation), "cell_text_field");
textField.setFontSize(12);
textField.setRotation(rotation);
textField.setVisibility(TextField.VISIBLE);
textField.setBorderColor(borderColor);
textField.setBorderWidth(BORDER_WIDTH);
cell.setCellEvent(new ChildFieldEvent(pdfForm, textField.getTextField(), 1, rotation));
.....
docWriter.addAnnotation(pdfForm);
和我从示例页面借用的ChildFieldEvent代码,并添加了一个额外的参数用于轮换:
/**
* Creates a ChildFieldEvent.
* @param parent the parent field
* @param kid the child field
* @param padding a padding
* @param rotation
*/
public ChildFieldEvent(PdfFormField parent, PdfFormField kid, float padding, int rotation) {
this.parent = parent;
this.kid = kid;
this.padding = padding;
this.rotation = rotation;
}
/**
* Add the child field to the parent, and sets the coordinates of the child field.
* @param cell
* @param rect
* @param cb
* @see com.lowagie.text.pdf.PdfPCellEvent#cellLayout(com.lowagie.text.pdf.PdfPCell,
* com.lowagie.text.Rectangle, com.lowagie.text.pdf.PdfContentByte[])
*/
@Override
public void cellLayout(PdfPCell cell, Rectangle rect, PdfContentByte[] cb) {
try {
parent.addKid(kid);
kid.setWidget(new Rectangle(rect.getLeft(padding), rect.getBottom(padding),
rect.getRight(padding), rect.getTop(padding),rotation),
PdfAnnotation.HIGHLIGHT_INVERT);
} catch (Exception e) {
throw new ExceptionConverter(e);
}
}
答案 0 :(得分:1)
我已经做了一些测试,看起来Ubuntu PDF文件(文档查看器)没有正确呈现PDF,因为在Windows Adobe PDF Viewer中查看相同的文件,表单看起来很好。
我会做更多测试并报告回来。