我正在使用iTextSharp(5.5.6)来填充一些Acroform,我注意到一些奇怪的行为:
-
在某些情况下,如果我填写AcroForm iTextSharp将文本放在TextBox字段中然后我展平表单,如果与相同的AcroForm填充槽Acrobat相比,该字段的文本在与TextBox基线不同的距离处“渲染”读者;
-
如果我填入一个带有匹配值的复选框(以“检查”它),然后我展平表单,生成的PDF将使用不同的“检查”符号进行渲染 .
这是我用来填充和压平AcroForm的代码:
private string fill_form(string output_file)
{
using (PdfReader _pdfReader = new PdfReader(FormPath))
{
using (PdfStamper _pdfStamper = new PdfStamper(_pdfReader, new FileStream(output_file, FileMode.Create)))
{
_pdfStamper.AcroFields.GenerateAppearances = true;
foreach (var _field in _pdfStamper.AcroFields.Fields)
foreach (TemplateField _spField in _lstFields)
{
if (_field.Key.Equals(_spField.Name))
{
switch (_spField.Type )
{
case TemplateFieldType.Text:
_pdfStamper.AcroFields.SetField(_field.Key, _spField.Value);
break;
case TemplateFieldType.Checkbox:
if (_spField.Value == _spField.OnValue)
_pdfStamper.AcroFields.SetField(_field.Key, _spField.OnValue);
else
_pdfStamper.AcroFields.SetField(_field.Key, _spField.OffValue);
break;
}
}
}
_pdfStamper.FormFlattening = true;
}
}
return output_file;
}
哪里我错了?