0

次のコードを実行すると、エラーはスローされませんが、添付ファイルとして生成された pdf は空白で、ファイル サイズは 0k です。

編集:

Dim page As Page = New Page()
Dim form As HtmlForm = New HtmlForm()
page.Controls.Add(form)

Dim bpa As UserControl_BpaReceipt = page.LoadControl("~/UserControl/BpaReceipt.ascx")
bpa._thisCart = _thisCart
form.Controls.Add(bpa)
Dim writer As StringWriter = New StringWriter()

Me.Server.Execute(page, writer, False)

編集終了:

Dim bytes = Encoding.UTF8.GetBytes(writer.ToString())

Dim input As MemoryStream = New MemoryStream(bytes)

Dim output As MemoryStream = New MemoryStream()
''//Dim reader As TextReader = New StringReader(writer.ToString())

Dim doc As Document = New Document(PageSize.A4.Rotate, 30, 30, 30, 30)

Dim pdfWriter As PdfWriter = pdfWriter.GetInstance(doc, output)

doc.Open()

XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, doc, input, Nothing)

email.Attachments.Add(New Attachment(output, "Quote.pdf", "application/pdf"))

Dim smtp As New SmtpClient()
smtp.Credentials = New System.Net.NetworkCredential(System.Web.Configuration.WebConfigurationManager.AppSettings("SMTPUser").ToString(), System.Web.Configuration.WebConfigurationManager.AppSettings("SMTPPassword").ToString())
smtp.Send(email)
doc.Close()

私はこのプロセスに非常に慣れていないので、助けていただければ幸いです。また、ストリームではなくファイルに出力するかどうかを明確にするために、 writer.toString() の html が期待どおりに出力されます。

この件についてのご意見をお待ちしております。

ありがとう、

編集:

Dim page As Page = New Page()
Dim form As HtmlForm = New HtmlForm()
page.Controls.Add(form)

Dim bpa As UserControl_BpaReceipt = page.LoadControl("~/UserControl/BpaReceipt.ascx")
bpa._thisCart = _thisCart
form.Controls.Add(bpa)
Dim writer As StringWriter = New StringWriter()

Me.Server.Execute(page, writer, False)

email.IsBodyHtml = True


If (toValues.Value.Contains(";")) Then
    Dim toArray = toValues.Value.Split(";")
    For Each value In toArray
        email.To.Add(value)
    Next
Else
    email.To.Add(toValues.Value.ToString())
End If

email.Subject = txtSubject.Text
email.Body = "<br /><br /><br />" & writer.ToString()

email.From = New MailAddress("webadmin@managemobility.com")

Dim bytes = Encoding.UTF8.GetBytes(writer.ToString())

Dim input As MemoryStream = New MemoryStream(bytes)

Dim output As MemoryStream = New MemoryStream()
''//Dim reader As TextReader = New StringReader(writer.ToString())

Dim doc As Document = New Document(PageSize.A4.Rotate, 30, 30, 30, 30)

Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(doc, output)
pdfWrite.CloseStream = False
doc.Open()

XMLWorkerHelper.GetInstance().ParseXHtml(pdfWrite, doc, input, Nothing)
doc.Close()
email.Attachments.Add(New Attachment(output, "Quote.pdf", "application/pdf"))

Dim smtp As New SmtpClient()
smtp.Credentials = New System.Net.NetworkCredential(System.Web.Configuration.WebConfigurationManager.AppSettings("SMTPUser").ToString(), System.Web.Configuration.WebConfigurationManager.AppSettings("SMTPPassword").ToString())
smtp.Send(email)
''//doc.Close()

あなたの提案を反映するようにコードを編集しましたが、同じ出力を空の pdf 0kb で受け取ったのではないかと心配しています。私もこの問題に非常に悩まされており、提案に本当に感謝しています。

4

1 に答える 1