Asp.net mvc 4 如何在现有PDF中动态插入值?
有一个PDF,其中包含一些字段以接受用户提供的值(例如:“生物数据”表单)。我的问题是,如何将用户输入插入现有PDF的正确字段并生成填充的PDF? 如果我使用iTextSharp,那么如何选择坐标来打印值 是否有设计工具来设计矩形字段以接受值? 因为我的PDF模板有很多字段可以从用户端获取值。Asp.net mvc 4 如何在现有PDF中动态插入值?,asp.net-mvc-4,pdf,itextsharp,Asp.net Mvc 4,Pdf,Itextsharp,有一个PDF,其中包含一些字段以接受用户提供的值(例如:“生物数据”表单)。我的问题是,如何将用户输入插入现有PDF的正确字段并生成填充的PDF? 如果我使用iTextSharp,那么如何选择坐标来打印值 是否有设计工具来设计矩形字段以接受值? 因为我的PDF模板有很多字段可以从用户端获取值。 广告中的tnx有两种可能性: 您的原始PDF是一个表单: 您可以通过检查PDF是否有如下所述的字段来检查: 您需要将Java代码改编为C代码,或者您可以使用RUP,如我对问题的回答所示 在这种情况下,填写
广告中的tnx有两种可能性: 您的原始PDF是一个表单: 您可以通过检查PDF是否有如下所述的字段来检查: 您需要将Java代码改编为C代码,或者您可以使用RUP,如我对问题的回答所示 在这种情况下,填写表格很容易:
PdfStamper pdfStamper = new PdfStamper(new PdfReader(templateFile), new FileStream(fileName, FileMode.Create));
AcroFields acroFields = pdfStamper.AcroFields;
acroFields.SetField(key, value);
pdfStamper.FormFlattening = true;
pdfStamper.Close();
使用SetField()
可以有任意多行。在这些行中,键
是原始表单中定义的字段名<代码>值是要在该字段的位置添加的值
带有pdfStamper.formflatting
的行是可选的。如果将该值设置为true
,则将删除所有交互:表单将不再是表单。如果删除该行或将该值设置为false
,则该表单仍将是一个表单。您将能够更改字段的内容并提取字段的值
您的原始PDF不是表单:
PdfStamper
。从该PdfStamper
获取PdfContentByte
对象后,您可以按照文档中的说明添加文本。阅读这些章节,或者看一下用关键字标记的内容。这本书也应该很有趣
我建议不要使用第二种方法,因为很难找到要使用的精确坐标。如果您的PDF不是表单,请使用Adobe Acrobat将其转换为表单,然后使用第一种方法。第一种方法更适合未来:如果您需要更改表单中的某些内容,您可以在不必更改代码的情况下更改表单(前提是保留原始字段名)。ItextSharp提供了同样的方法,使用ItextSharp的pdfStamper类。 只是一个供你参考的样品
//create pdfreader instance and read content of existing PDF file into it, by providing it's path
PdfReader pdfReader = new PdfReader(FILE_PATH);
// create stamper instance to edit the exiting file
PdfStamper pdfStamper = new PdfStamper(pdfReader, Response.OutputStream);
// perform your edit operation here.....
.
.
.
// close pdfStamper instance
stamper.Close();