不支持 ITextSharp 导出的 PDF 或已损坏 Visual Basic

ITextSharp exported PDF is not supported or damaged visual basic

我刚开始使用 ITextSharp,我正在尝试将 PDF 作为附件导出。下面的代码工作正常

Dim pdfTemplate As String = "C:\Users\mrogers\Documents\ERCP_CA_Template2.pdf"
Dim newFile As String = "C:\Users\mrogers\Documents\ERCP_CA_Template3.pdf"
Dim pdfReader As New PdfReader(pdfTemplate)
Dim pdfStamper As New PdfStamper(pdfReader, New System.IO.FileStream(newFile, System.IO.FileMode.Create))
Dim pdfFormFields As AcroFields = pdfStamper.AcroFields

pdfFormFields.SetField("BUSINESS_SITE_ADDRESS_A5", "Demo")
pdfStamper.FormFlattening = True

pdfStamper.Close()

但是,当我尝试将其转换为导出附件时,Adobe Acrobat Reader 无法打开该文件,因为它不是受支持的类型或已损坏。我的代码如下。

    Dim ms As MemoryStream = New MemoryStream()
    Dim pdfTemplate As String = "C:\Users\mrogers\Documents\ERCP_CA_Template2.pdf"
    Dim pdfReader As New PdfReader(pdfTemplate)
    Dim pdfStamper As New PdfStamper(pdfReader, ms)
    Dim pdfFormFields As AcroFields = pdfStamper.AcroFields

    pdfFormFields.SetField("BUSINESS_SITE_ADDRESS_A5", "Demo")
    pdfStamper.FormFlattening = True

    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache)
    HttpContext.Current.Response.ContentType = "application/pdf"
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=testingPdf2.pdf")
    HttpContext.Current.Response.Write(ms.ToArray())
    HttpContext.Current.Response.BufferOutput = True
    HttpContext.Current.Response.Flush()
    HttpContext.Current.Response.Close()

    pdfStamper.Close()

我一直在努力寻找关于此的任何好的示例或文档。任何有关我哪里出错的帮助将不胜感激。

对于遇到类似问题的任何人,我已经解决了。

    Dim output As New MemoryStream()
    Dim pdfTemplate As String = "C:\Users\mrogers\Documents\ERCP_CA_Template2.pdf"
    Dim pdfReader As New PdfReader(pdfTemplate)
    Dim pdfStamper As New PdfStamper(pdfReader, output)
    Dim pdfFormFields As AcroFields = pdfStamper.AcroFields

    pdfFormFields.SetField("BUSINESS_SITE_ADDRESS_A5", "Demo")
    pdfStamper.FormFlattening = True

    pdfStamper.Close()

    Dim mergedBytes() As Byte = output.GetBuffer()
    HttpContext.Current.Response.Clear()
    HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=demo4.pdf")
    HttpContext.Current.Response.AddHeader("Content-Length", mergedBytes.Length.ToString())
    HttpContext.Current.Response.ContentType = "application/octet-stream"
    HttpContext.Current.Response.BinaryWrite(mergedBytes.ToArray)
    HttpContext.Current.Response.Flush()
    HttpContext.Current.Response.End()