我想替换PDF文档中的特定文本。我目前正在使用itextSharp
库来播放PDF文档。
我从pdfdocument
中提取了字节,然后替换了该字节,然后再次使用字节写入文档,但它不起作用。在下面的例子中,我试图用5678替换字符串1234
任何有关如何执行此操作的建议都会有所帮助。
PdfReader reader = new PdfReader(opf.FileNames[i]);
byte[] pdfbytes = reader.GetPageContent(1);
PdfString oldstring = new PdfString("1234");
PdfString newstring = new PdfString("5678");
byte[] byte1022 = oldstring.GetOriginalBytes();
byte[] byte1067 = newstring.GetOriginalBytes();
int position = 0;
for (int j = 0; j <pdfbytes.Length ; j++)
{
if (pdfbytes[j] == byte1022[0])
{
if (pdfbytes[j+1] == byte1022[1])
{
if (pdfbytes[j+2] == byte1022[2])
{
if (pdfbytes[j+3] == byte1022[3])
{
position = j;
break;
}
}
}
}
}
pdfbytes[position] = byte1067[0];
pdfbytes[position + 1] = byte1067[1];
pdfbytes[position + 2] = byte1067[2];
pdfbytes[position + 3] = byte1067[3];
File.WriteAllBytes(opf.FileNames[i].Replace(".pdf","j.pdf"), pdfbytes);
答案 0 :(得分:2)
是什么让你觉得1234是页面内容流的一部分,而不是XObject的形式?如果您不解析页面的所有资源,那么您的代码将永远无法正常工作。
另外:我看到GetPageContent()
,但我没有看到你在任何地方使用SetPageContent()
。如何将更改存储在PdfReader对象中?
此外,我没有看到您使用PdfStamper
将更改的PdfReader内容写入文件。
最后:我不好意思引用Adobe的PDF架构师Leonard Rosenthol的话,但问他,他会亲自告诉你,你不应该做你想做的事情。 PDF不是编辑格式。阅读我在iText上写的书第6章的介绍:http://www.manning.com/lowagie2/samplechapter6.pdf