0

这是我对 .NET 的 iText5 的第一次体验,到目前为止,除了一项任务外,非常成功。

我创建了两个 VB.Net 类,每个类都成功返回一个有效的 MemoryStream,其中包含一个单页 PDF 文档,该文档可以单独返回到浏览器并显示,也可以附加并通过电子邮件发送。

我想知道如何将两个流合并为一个包含两页文档的流,以便我可以将文档作为单个附件发送,将流返回到浏览器以显示一个包含两个页面的文档。

此代码将在我的代码隐藏页面中用于在创建后返回并通过电子邮件发送内容。正如您在附加代码中看到的那样,我想提供一个流,其中包含每个当前文档的单独页面。在下面的代码中,标识符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 回答