我已经在互联网上搜索了两周时间,找到了一些有趣的解决方案,但似乎没有一个能够给我答案。
我的目标是:
我想在静态PDF文件中查找文本并将其替换为其他文本。 我希望保留内容的设计。 这真的那么难吗?
我找到了一种方法,但我失去了所有的信息:
using (PdfReader reader = new PdfReader(path))
{
StringBuilder text = new StringBuilder();
for (int i = 1; i <= reader.NumberOfPages; i++)
{
text.Append(PdfTextExtractor.GetTextFromPage(reader, i));
text.Replace(txt_SuchenNach.Text, txt_ErsetzenMit.Text);
}
return text.ToString();
}
我的第二次尝试效果好多了,但是需要添加字段以便我可以修改其中的文本内容:
string fileNameExisting =path;
string fileNameNew = @"C:\TEST.pdf";
using (FileStream existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
using (FileStream newFileStream = new FileStream(fileNameNew, FileMode.Create))
{
// PDF öffnen
PdfReader pdfReader = new PdfReader(existingFileStream);
PdfStamper stamper = new PdfStamper(pdfReader, newFileStream);
var form = stamper.AcroFields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys)
{
var value = pdfReader.AcroFields.GetField(fieldKey);
form.SetField(fieldKey, value.Replace(txt_SuchenNach.Text, txt_ErsetzenMit.Text));
}
// Textfeld unbearbeitbar machen (sieht aus wie normaler text)
stamper.FormFlattening = true;
stamper.Close();
pdfReader.Close();
}
这将保留其余文本的格式,并仅更改我搜索的文本。我需要一个针对不在文本字段中的文本的解决方案。
感谢您所有的答案和帮助。