我正在使用此代码来展平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
提前致谢。
答案 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字段中)。您必须搜索解决方法。