.NET 用の iText5 を使用するのはこれが初めてで、これまでのところ、1 つのタスクを除いて非常にうまくいっています。
2 つの VB.Net クラスを作成しました。それぞれが、ブラウザーに個別に返して表示したり、添付して電子メールで送信したりできる単一ページの PDF ドキュメントを含む有効な MemoryStream を正常に返します。
2 つのストリームを 2 ページのドキュメントを含む 1 つのストリームにマージして、ドキュメントを単一の添付ファイルとして送信し、ストリームをブラウザに返して、両方のページを含む 1 つのドキュメントを表示する方法を知りたいです。
このコードは、コード ビハインド ページで使用され、作成後にコンテンツを返し、電子メールで送信します。添付のコードでわかるように、現在のドキュメントごとに個別のページを含む単一のストリームを提供したいと思います。以下のコードでは、識別子EitherSingleStream
は各ストリームを個別にプラグインした場所を示しており、コードはその単一のページに対して機能します。
コードの一部は冗長である可能性があり、.NET 用の私の最初の iText5 の外出であり、どんな助けも大歓迎です。私がこれまでに持っているコードは次のとおりです。
Private Sub btnSubmit_Click(sender As Object, e As System.EventArgs) Handles btnSubmit.Click
Dim Emplid As String = txtEMPLID.Text,
BankInfo As String = txtBankInfo.Text,
AsOfDate As String = Request.Form("AsOfDate")
lEmp = New VOELibrary.Employee(Emplid)
lEmp.EarningsAsOfDate = AsOfDate
lEmp.EarningsYears = 3
lEmp.LoadEarningsSummary()
lEmp.LoadEmploymentHistory()
' request logging meta data object
Dim FormRequest As New VOELibrary.FormRequest
' Function that uses first template and Styamper to return first document stream
Dim FM1005 As New VOELibrary.FannieMae1005(lEmp, BankInfo, UserInfo)
Dim streamForm1005PDF As MemoryStream = FM1005.PDFStream
' Function that uses second template and stamper to return second docuemnt stream
Dim VOESummary As New VOELibrary.VOESummary(lEmp, UserInfo)
Dim streamVOESummaryPDF As MemoryStream = VOESummary.PDFStream
*EitherSingleStream*.Position = 0
MailPDF(*EitherSingleStream*, FormRequest)
*EitherSingleStream*.Position = 0
Dim response As HttpResponse = HttpContext.Current.Response
response.Clear()
response.AddHeader("Content-Disposition", "attachment; filename= FM1005.pdf")
response.ContentType = "application/pdf"
response.BinaryWrite(*EitherSingleStream*.ToArray())
response.Flush()
response.End()
With FormRequest
.Req_UID = UserInfo(0).ToString
.Req_UserName = UserInfo(1).ToString
.EMPID = lEmp.EmplID
.FormDate = Date.Now.ToShortDateString
.Requestor = BankInfo
.AsOfDate = AsOfDate
.Log()
End With
End Sub