所以我一直在尝试生成报告。我已经尝试了很多事情,但似乎总是有问题。我目前正在尝试使用iTextSharp 4.1.6。
我当前的策略是使用LibreOffice创建具有可编辑pdf字段的文档,或者我想它们被称为“ AcroFields”。我不确定,因为我找不到定义。但是无论如何,我都假设所有这些都是“ AcroFields”:
但是,如果我将所有这些都放入表单并导出为pdf,则只有其中一些会显示为AcroFields:
var reader = new PdfReader(File.ReadAllBytes("abc.pdf"));
foreach(var field in reader.AcroFields.Fields)
{
Console.WriteLine(((DictionaryEntry)field).Key);
}
> Text Box 1
Check Box 1
Numeric Field 1
Formatted Field 1
Date Field 1
List Box 1
Combo Box 1
Push Button 1
Option Button 1
请注意如何不显示Label Field 1
。如果存在,那么替换文本可能很容易。除非它不存在,所以看起来即使iText也无法在pdf中进行简单的文本替换。这是真的?您将如何使用iTextSharp替换pdf文档中的文本?
答案 0 :(得分:1)
请注意如何不显示标签字段1。
由于没有 AcroForm 表单字段类型“标签”,因此通常将 labels 表单绘制为PDF文件中的常规页面内容。
如果存在,则替换文本可能很容易。除非它不存在,所以看起来即使iText也无法在pdf中进行简单的文本替换。这是真的吗?
实际上,通常在PDF中没有简单的文本替换。
如何使用iTextSharp替换pdf文档中的文本?
我将使用iText文本提取功能来确定要替换的文本的边界框坐标,该扩展功能可返回文本加坐标。然后,我将使用iText的PdfCleanUp...
类通过删除来删除该文本。最后,我将替换文本作为新文本添加到开始时确定的边界框中。
不幸的是,在您的4.1.6版本中,没有良好的文本提取和修订功能;对于这种方法,您应该至少更新到5.5.x。
不过,或者,由于您一直在尝试生成报告,因此我认为模板设计已掌握在您的手中。在这种情况下,您可以将标签放入您可以 更改的只读文本字段中(它们仅对GUI用户只读)。