1

iTextSharp に問題があります。PDFファイルに2行のフィールドがあるとしましょう(ファイルが与えられ、どのように作成されたのかわかりません)

行 1:

data[0].#subform[0].Tabella1[0].Riga2[0].DATA[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINIPM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINILM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDLM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDAM[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINIPP[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAINILP[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDLP[0]
data[0].#subform[0].Tabella1[0].Riga2[0].ORAENDAP[0]

行 2:

data[0].#subform[0].Tabella1[0].Riga3[0].DATA[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINIPM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINILM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDLM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDAM[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINIPP[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAINILP[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDLP[0]
data[0].#subform[0].Tabella1[0].Riga3[0].ORAENDAP[0]

以下のコードを使用してこのフィールドを読み取ります。

            String newFile = source.Insert(source.Length - 4, "newModyfiy");
            using (FileStream outFile = new FileStream(newFile, FileMode.Create))
            {
                PdfReader pdfReader = new PdfReader(source);
                foreach (KeyValuePair<String, AcroFields.Item> kvp in pdfReader.AcroFields.Fields)
                {

                            int fileType = pdfReader.AcroFields.GetFieldType(kvp.Key);
                            string filedValue = pdfReader.AcroFields.GetField(kvp.Key);
                            string transFileName = pdfReader.AcroFields.GetTranslatedFieldName(kvp.Key);
                            textBox1.Text = textBox1.Text + fileType.ToString() + " " + filedValue + " " + transFileName + Environment.NewLine;
                }
                pdfReader.Close();
            }

最初の行のみの両方の行の値を取得しています。私の目標は、それらのフィールドに値を書き込み、新しいファイルを保存することです。私が使用する場合:

PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create), '\0', true);

私は常に最初の行の値を上書きします (2 行目に値を設定しようとすると、最初に表示されます)。最後のパラメーター PdfStamper を false に変更すると、ファイルは正しく書き込まれますが、ファイルは手動で編集できません。

pdfファイルの問題ですか?適切なフィールドに値を読み込んで書き込む方法はありますか?

私はこの数日を過ごしましたが、この奇妙な動作の理由を見つけることができませんでした. 小さな助けや手がかりさえも感謝されます。

編集:言及されたPDFファイルを追加します。 https://ufile.io/mwni5

一部のオブジェクトを削除しましたが、一般的な構造は維持されています。

4

0 に答える 0