0

.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
4

1 に答える 1

1

ドキュメント全体ではなく PdfPage を返すように関数を変更し、ページを別の関数で結合し、それらを結合した後に MemoryStream を出力します。

または、ドキュメントの配列を取得する関数を作成し、ドキュメント内の各 PdfPage に対して、新しいページを新しいドキュメントに追加してそれを返します。

異なるドキュメントを単一のドキュメントにマージする方法を参照してください。

于 2012-12-13T03:03:33.160 に答える