使用itext填充pdf的多行文本域

使用acrobat编辑pdf文件,在pdf文件中添加一个多行的文本域。
然后使用itext对多行文本域填充,怎么设置填充内容的间距?

另外,如果我要填充的内容可能跨行了,如图,这样怎么编辑成一个文本域?
如果是两个文本域,肯定就是两个域名(如name1和name2),填充的时候需要把填充的内容分成两半,分别填充。这个肯定不合理。
怎么用一个文本域呢?

clipboard.png

阅读 10.5k
6 个回答

..................................

新手上路,请多包涵

你好这个问题解决了吗?

第一个问题可以用这种方式解决:

List<AcroFields.FieldPosition> multiLinePosition = acroFields.getFieldPositions("multiLine");
int page = multiLinePosition.get(0).page;
Rectangle rectangle = multiLinePosition.get(0).position;
float left = rectangle.getLeft();
float right = rectangle.getRight();
float top = rectangle.getTop();
float bottom = rectangle.getBottom();

//BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", false);
Font font = new Font(baseFont, 12, Font.BOLD, BaseColor.BLACK);
PdfContentByte pdfContentByte = ps.getOverContent(page);
ColumnText columnText = new ColumnText(pdfContentByte);

Rectangle r = new Rectangle(left, bottom, right, top);
columnText.setSimpleColumn(r);

//FontFactory.getFont(FontFactory.COURIER, 20, Font.BOLD, BaseColor.RED)
Chunk chunk = new Chunk("梅雪争春未肯降,骚人搁笔费评章。梅须逊雪三分白,雪却输梅一段香。");
Paragraph paragraph = new Paragraph(12, chunk);
paragraph.setSpacingBefore(16);
columnText.addText(paragraph);
// 设置字体,如果不设置添加的中文将无法显示
paragraph.setFont(font);
columnText.addElement(paragraph);
columnText.go();

第二个问题,只能用两个文本域,没办法使用一个使其自动换行。

新手上路,请多包涵

HI,楼主,请问可以给下多文本设置行距的代码?上面给的有些不完整。

求问朋友,此问题可有解决,有什么好的办法吗?谢谢。

新手上路,请多包涵
Paragraph paragraph = new Paragraph(12f, chunk);

这里的12就是行距
相当于paragraph.Leading = 12f;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏