【发布时间】:2017-04-09 20:39:27
【问题描述】:
我在这里尝试创建一段代码,该代码将打开带有空控件的现有 PDF 表单(以前使用 Open Office 创建)并使用 iTextSharp () 设置值。我还在测试 iTextSharp,看看它是否能做我需要做的事情,到目前为止答案是否定的。
请根据我在网上找到的,看看我在下面做了什么:
string fileNameExisting = @"PdfTemplate.pdf";
string fileNameNew = @"new.pdf";
using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
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);
var form = stamper.AcroFields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys)
{
bool result = form.SetField(fieldKey, "A lot of text here.");
}
stamper.Close();
pdfReader.Close();
}
问题 1
iTextSharp 仅识别 Open Office 中的“控件”元素(例如文本框)。我尝试将表格添加到 PDF 模板,但它没有出现在字段中。这意味着我在使用方面真的很有限。
问题 2
当我在字段中设置文本时,文本没有换行,控件的大小不是动态的,这意味着如果文本太长,它不会全部出现。我不能使用滚动条,因为 PDF 是要打印的。
我试过了
对于第一个问题,我使用 Word 而不是 Open Office Writer 创建了一个 PDF 表单。但是,iTextSharp 无法识别 Word 中的任何控件,我的字段集合是空的..
对于第二个问题,我尝试修改Open Office中控件的每个属性,上网查看是否有人有解决方案。但据我了解,大小是固定的,因为它是 AcroFields,所以我无法使控件动态化,之后也无法使用 iTextSharp 更改大小。
我希望有人经历过同样的情况,并且能够使用 iTextSharp 或其他库来指导我,无论是否免费。虽然我在经营自己的企业,但我买不起 2000 英镑的许可证,但我愿意接受建议,因为我需要交付。 最后一个选项是用 iTextSharp 从头开始创建 PDF,但它不像修改那样快速和容易生成,这意味着对于 PDF 的每次更新,公司都需要我更改代码......我对那个解决方案不太满意。
【问题讨论】: