尝试在绘制freeText注释时对齐矩形中心的文本,但文本位于左上角

时间:2017-03-30 07:48:58

标签: itext

我正在尝试将文本注释字符串对齐在矩形的中心,但始终设置在左上角

PdfContentByte pcb = stamper.getOverContent(page);
PdfAnnotation annotation = PdfAnnotation.createFreeText(stamper.getWriter(), rectangle, "Mayank Pandey", pcb);
annotation.put(PdfName.Q, new PdfNumber(PdfFormField.Element.ALIGN_MIDDLE));

显示pdf中左上角的文字:

Text showing left top corner in pdf

1 个答案:

答案 0 :(得分:0)

你设置

annotation.put(PdfName.Q, new PdfNumber(PdfFormField.Element.ALIGN_MIDDLE));

常量Element.ALIGN_MIDDLE定义为

/**
 * A possible value for vertical alignment.
 */
public static final int ALIGN_MIDDLE = 5;

但是,自由文本注释中 Q 的值指定为:

  

  整数   (可选; PDF 1.4)指定 quadding (对齐)形式的代码,用于显示注释的文本:   
  0左对齐   
  1居中   
  2右对齐   
  默认值:0(左对齐)。

因此,您使用的值5根本不是有效的 Q uadding值!

此外, FreeText Q uadding甚至不支持您想要实现的目标,在矩形中心对齐,它只允许选择水平对齐,而不是垂直对齐。

因此,为了您的目标,您必须使用自定义外观(如果存在,则优先使用)。