データベースに .pdf ファイルが保存されており、データベースに署名ファイル (.png) が保存されています。iTextSharp を使用して署名画像を .pdf ファイルに追加し、結果をブラウザーに表示しようとしています。
これが私のコードです:
byte[] file = Repo.GetDocumentBytes(applicantApplication.ApplicationID, documentID);
byte[] signatureBytes = Repo.GetSignatureBytes((Guid)applicantApplicationID, signatureID);
iTextSharp.text.Image signatureImage = iTextSharp.text.Image.GetInstance(signatureBytes);
iTextSharp.text.Document document = new iTextSharp.text.Document();
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(file, 0, file.Length, true, true))
{
PdfWriter writer = PdfWriter.GetInstance(document, ms);
document.Open();
signatureImage.SetAbsolutePosition(200, 200);
signatureImage.ScaleAbsolute(200, 50);
document.Add(signatureImage);
document.Close();
return File(ms.GetBuffer(), "application/pdf");
}
ページが読み込まれ、署名付きの .pdf が表示されますが、元のドキュメントはどこにもありません。古い .pdf ファイルを編集するのではなく、新しい .pdf ファイルを作成してそこに画像を配置しているようです。
元の .pdf ドキュメントが「file」変数に読み込まれていることを確認しました。また、MemoryStream の "ms" の長さが byte[] "file" の長さと同じであることも確認しました。