iTextSharp :Pdf矩形单选按钮在填充数据时变为圆形按钮



我正在尝试填写现有的PDF。有一个矩形单选按钮,我正在尝试填充。但是当我把价值放在里面时。外观从矩形变为圆形。

这是我的代码:

using (var existingFileStream = new FileStream(existingFileNameWithPath, FileMode.Open, FileAccess.Read))
using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
{
// Open existing PDF
var pdfReader = new PdfReader(existingFileStream);
// PdfStamper, which will create
var stamper = new PdfStamper(pdfReader, newFileStream,'', true);
var form = stamper.AcroFields;
form.SetField("Application for Export", "New");
stamper.Close();
pdfReader.Close();
}

我正在尝试制作的 pdf 类似于这个 pdf : https://www.faa.gov/documentLibrary/media/Form/FAA_Form_8130-1.pdf

PDF中的表单字段有点独特。它们使用显式绘图操作定义它们在打开、关闭,有时甚至聚焦(打开、主动按下(状态下的外观。

填写表单时,iText 必须创建这些值,因为无法保证它们存在(尤其是当您使用 iText 创建表单时!(,并且 iText 会插入"典型"外观。对于单选按钮,这是一个圆形按钮。请注意,至少对我来说,圆形按钮仅在我主动单击按钮时才会出现。

您有两个选项 - 相信有问题的 PDF 已经具有外观状态并禁用生成它们(您列出的 PDF 确实具有这些状态(

PdfReader reader = new PdfReader(INPUT_FILE);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(OUTPUT_FILE));
AcroFields fields = stamper.getAcroFields();
fields.setGenerateAppearances(false); //Add this line
fields.setField("Application for Export", "New");
stamper.close();

或者,您可以手动编写绘图操作并将其插入到表单域的外观状态中。

如果有文本字段要填写,则需要 setGenerateAppearences=true。此代码有助于解决-

AcroFields fields = stamper.AcroFields;
fields.GenerateAppearances = false;
fields.SetField("IndividualChk", "On");
fields.GenerateAppearances = true;
fields.SetField("InvestorName", "Mensh");
stamper.FormFlattening = true;

最新更新