ディスクに 498kb の PDF があります。これを、デバッガーで表示するとサイズが 508978 と報告される MemoryStream に読み込んでいます。次に、リーダーとスタンパーを使用すると、出力 MemoryStream のサイズは 15 になります。ストリームがディスクに出力されると、PDF は読み取れません。
MemoryStream inputStream = new MemoryStream();
MemoryStream outputStream = new MemoryStream();
FileStream fs = File.OpenRead(@"e:\O1.pdf");
inputStream.SetLength(fs.Length);
fs.Read(inputStream.GetBuffer(), 0, (int)fs.Length);
inputStream.Seek(0, SeekOrigin.Begin);
PdfReader reader = new PdfReader(inputStream);
PdfStamper stamper = new PdfStamper(reader, outputStream);
stamper.Writer.CloseStream = false;
AcroFields fields = reader.AcroFields;
foreach (String key in fields.Fields.Keys)
{
if (String.Equals(key, @"ReportID")) { stamper.AcroFields.SetField(@"ReportID", "Fred Bloggs"); }
}
stamper.Close();
Byte[] bytes = (Byte[])outputStream.ToArray();
File.WriteAllBytes(@"e:\O2.pdf", bytes);