0

我想替换 PDF 文档中的特定文本。我目前正在使用itextSharp库来处理 PDF 文档。

我已经从中提取了字节pdfdocument,然后替换了该字节,然后用这些字节再次写入文档,但它不起作用。在下面的示例中,我尝试将字符串 1234 替换为 5678

任何有关如何执行此操作的建议都会有所帮助。

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);
4

1 回答 1

2

是什么让您认为 1234 是页面内容流的一部分,而不是 XObject 表单的一部分?如果您不解析页面的所有资源,您的代码将永远无法正常工作。

另外:我看到了GetPageContent(),但我没有看到你SetPageContent()在任何地方使用。更改将如何存储在 PdfReader 对象中?

此外,我没有看到您使用PdfStamper将更改后的 PdfReader 内容写入文件。

最后:我不敢引用 Adob​​e 的 PDF 架构师 Leonard Rosenthol 的话,但问他,他会亲自告诉你,你不应该做你想做的事。PDF 不是一种编辑格式。阅读我在 iText 上写的书第 6 章的介绍:http: //www.manning.com/lowagie2/samplechapter6.pdf

于 2012-10-08T15:25:02.113 回答