我正在研究使用C#和iTextSharp创建内容的可行性,它可以采用PDF模板并将各种占位符值替换为从数据库中检索的实际值。基本上是PDF邮件合并。我有iText的动作书,但它涵盖了很多我不需要的东西,我很难找到任何与我想做的事情有关的东西。我很乐意使用PDF字段作为占位符,只要合并/展平的表单看起来不像它有字段,输出文档应该看起来像邮件合并字母而不是已填写的表单。一个理想的世界我只想搜索PDF的文本内容,然后用正确的字段值替换文本占位符和邮件合并。
任何人都可以告诉我这方面的最佳方法,并指出我要使用的最有用的iTextSharp类的方向,或者如果你知道动作中的iText预订了一个指向我最有用的部分的指针。< / p>
答案 0 :(得分:9)
在任何一种情况下,您都希望将表单字段设置为没有边框,并且没有背景......这样只会显示其内容,没有框可以使您的字段看起来像字段
将字段数据合并到一个表单中是非常简单的iText(原谅我的Java,我对C#不太了解):
void fillPDF( String filePath, Map<String, String> fieldVals ) {
PdfReader reader = new PdfReader(myFilePath);
PdfStamper stamper = new PdfStamper( reader, outputFileStream );
stamper.setFormFlattening(true);
AcroFields fields = stamper.getAcroFields();
for (String fldName : fieldVals.keySet()) {
fields.setField( fldName, fieldVals.get(fldName) );
}
stamper.close();
}
这会忽略具有多个选择(和例外)的列表框,但除此之外应该准备好了。鉴于你正在做一个邮件合并类型的事情,我不认为多个选择会成为一个问题。