FormFlattening后,表单字段文本垂直对齐

时间:2013-05-23 06:18:03

标签: itext

我正在使用此代码来展平pdf。有一个名为“DBA_Name”的表单字段。这是多行的。它是垂直底部对齐的。但是在展平pdf之后,它会进行顶部对齐。 我不知道为什么它会显示这种行为,因为它应该是底部对齐的。 我的代码是 -

  PdfReader readerFlat = new PdfReader(inputFilePath);  
  FileOutputStream foutFlat = null;
  PdfStamper stamperFlat = null;
  foutFlat = new FileOutputStream(outputFilePath);              
  stamperFlat = new PdfStamper(readerFlat, foutFlat); 
  stamperFlat.setFormFlattening(true);
  stamperFlat.close();

PDF的链接是 http://www.mediafire.com/download/5ccqjvg4676h0j2/Test.pdf

提前致谢。

1 个答案:

答案 0 :(得分:2)

你指称字段“垂直底部对齐”让我感到困惑,因为ISO-32000-1没有定义任何允许AcroForm表单字段内容垂直对齐的参数。如果您不相信我,请阅读the spec

我查看了您与我们分享的PDF,我发现它包含混合形式。它包含基于AcroForm技术的字段描述,以及基于XML Forms Architecture(XFA)的描述。 AcroForm技术早于XFA技术。 XFA引入了新概念,例如垂直对齐。

您假设核心iText展平XFA表单。这个假设是错误的。核心iText只查看AcroForm定义,并在展平表单时忽略XFA流。只有封闭源码的iText附加XFA工具才能展平XFA。

总结:您期望iText解释不存在的属性(至少不在AcroForm字段中)。您必须搜索解决方法。