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の内容をファイルに書き込むために使用しているのを見ていません。

最後に、AdobeのPDFアーキテクトであるLeonard Rosentholの言葉を引用するのは恥ずかしがり屋ですが、彼に聞いてみると、彼はあなたがやろうとしていることをやるべきではないと個人的に言います。PDFは編集用のフォーマットではありません。iTextで書いた本の第6章のイントロを読んでください:http://www.manning.com/lowagie2/samplechapter6.pdf

于 2012-10-08T15:25:02.113 に答える