iText开发:能否为PdfTextFormField设置底部垂直对齐?
在iText中设置PdfTextFormField的垂直底部对齐
当然可以为PdfTextFormField设置垂直对齐!默认文本是垂直居中的,要改成底部对齐其实很简单,在iText 7+版本中直接调用现成的方法就能实现。
实现方法
iText 7为表单字段提供了setVerticalAlignment()方法,你只需要传入PdfFormField.ALIGN_BOTTOM作为参数,就能让文本垂直对齐到底部。
修改后的完整代码
import java.awt.Desktop; import java.io.File; import java.io.IOException; import com.itextpdf.forms.PdfAcroForm; import com.itextpdf.forms.fields.PdfFormField; import com.itextpdf.forms.fields.PdfTextFormField; import com.itextpdf.kernel.colors.ColorConstants; import com.itextpdf.kernel.geom.Rectangle; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfPage; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.Document; public class problem4 { public static void main(String[] args) throws IOException { String fnPdf = "results/problem4.pdf"; PdfWriter writer = new PdfWriter(fnPdf); PdfDocument pdf = new PdfDocument(writer); PdfPage page = pdf.addNewPage(); PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true); PdfTextFormField field = PdfFormField.createText(pdf, new Rectangle(40, 200, 150, 50), "fName", "Dirk"); field.setColor(ColorConstants.BLUE); field.setFontSize(10); field.setJustification(PdfFormField.ALIGN_CENTER); // 设置垂直底部对齐 field.setVerticalAlignment(PdfFormField.ALIGN_BOTTOM); field.setBorderColor(ColorConstants.BLUE); field.setBorderWidth(2); form.addField(field, page); Document document = new Document(pdf); document.close(); pdf.close(); Desktop.getDesktop().open(new File(fnPdf)); } }
关键点说明
field.setVerticalAlignment(PdfFormField.ALIGN_BOTTOM);这行是核心,它会告诉iText在渲染字段内容时,将文本固定在字段区域的底部。- 如果你使用的是iText 5版本(较旧版本),需要通过操作字段的外观字典来实现:
// iText 5的写法,供参考 field.getWidget().getAppearanceDictionary().put(PdfName.Q, new PdfNumber(4));
内容的提问来源于stack exchange,提问作者Dirk Kampfmeier
相关产品推荐
相关产品推荐

