所以我一直想写一份报告。我已经试过很多东西了,但似乎总是有问题。我目前正在尝试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文档中的文本?
发布于 2019-03-13 16:35:50
注意标签字段1是如何不存在的。
由于没有AcroForm表单字段类型"label",表单标签通常被绘制为PDF文件中的常规页面内容。
如果它是存在的,那么做一个文本替换可能很容易。除了它不存在,所以它看起来就像连iText都不能在pdf中做一个简单的文本替换。这是真的吗?
实际上,在PDF中通常没有简单的文本替换。
如何使用iTextSharp替换pdf文档中的文本?
我将使用iText文本提取功能来确定文本的边界框坐标,以返回文本加坐标的扩展。然后,通过使用iText的PdfCleanUp...类进行编辑来删除该文本。最后,我将在开始时确定的边界框中添加替换文本作为新文本。
不幸的是,好的文本提取和编辑都没有出现在您的4.1.6版本中;对于这种方法,您应该至少更新到5.5.x。
或者,由于您一直试图生成一个报告,我假设模板设计掌握在您的手中。在这种情况下,您可以将标签放入可以更改的只读文本字段(只对GUI用户进行只读)。
https://stackoverflow.com/questions/55143251
复制相似问题