這是我的代碼塊。它編譯得很好,當我關閉事件我收到電子郵件,但我然後得到這個錯誤 電子郵件附件錯誤在Adobe打開時(Acrobat無法打開'Att00002.pdf',因爲它不是支持的文件類型或因爲該文件已被損壞(例如,它被髮送作爲電子郵件的附件和wasnt正確地解碼。)試圖使用PdfStamper和MemoryStream將數據添加到現有的PDF然後發電子郵件
string agentName = "My Name";
MemoryStream _output = new MemoryStream();
PdfReader reader = new PdfReader("/pdf/Agent/Specialist_Certificate.pdf");
using (PdfStamper stamper = new PdfStamper(reader, _output))
{
AcroFields fields = stamper.AcroFields;
// set form fields
fields.SetField("FIELD_AGENT_NAME", agentName);
fields.SetField("FIELD_DATE", AvalonDate);
// flatten form fields and close document
stamper.FormFlattening = true;
SendEmail(_output);
DownloadAsPDF(_output);
stamper.Close();
}
private void SendEmail(MemoryStream ms)
{
Attachment attach = new Attachment(ms, new System.Net.Mime.ContentType("application/pdf"));
EmailHelper.SendEMail("[email protected]", "[email protected]", null, "", "Avalon Cert", "Hope this works", EmailHelper.EmailFormat.Html,attach);
}
EDITED ******************* ******************
using (MemoryStream _output = new MemoryStream())
{
using (PdfStamper stamper = new PdfStamper(reader, _output))
{
AcroFields fields = stamper.AcroFields;
// set form fields
fields.SetField("FIELD_AGENT_NAME", agentName);
fields.SetField("FIELD_DATE", AvalonDate);
// flatten form fields and close document
stamper.FormFlattening = true;
}
SendEmail(_output);
}
嘗試調用'SendEmail'之前關閉'PdfStamper'。您可能只附加了PDF字節流的一部分,因爲並非所有內容都被刷新爲輸出。 – rhens
當我將其更改爲stamper.Close(); SendEmail(_output);發送電子郵件時出現此錯誤 System.ObjectDisposedException:無法訪問已關閉的流 – user1566783