2017-11-03 20 views
0

sind mit rotativa per E-Mail einen PDF-Gutschein zu erzeugen, die dann an eine E-Mail angehängt und an den Kunden gesendet. Wenn ich Rotativa verwende, um das PDF einfach als Datei zu erstellen, funktioniert es hervorragend, aber wenn ich diese Datei an eine E-Mail angehängt habe, scheint sie an Qualität zu verlieren. Siehe Fotos unten:Erstellen von PDF mit rotativa und Anbringen

Gute Qualität von erzeugten pdf

enter image description here

Schlechte Qualität von per E-Mail pdf

enter image description here

Code unten:

public Byte[] pdfVoucher_file(string sk = "", int custInt = 0, string voucher_code = "") 
    { 
     var pdf = new ActionAsPdf("getVoucher/" + voucher_code, new { sk = sk, custInt = custInt }) 
     { 
      FileName = "Voucher_" + voucher_code.ToString().Trim() + ".pdf", 
     }; 

     Byte[] pdfData = pdf.BuildPdf(ControllerContext); 
     return pdfData; 
    } 

    public void email_Voucher(string sk, string voucher_code) 
    { 
     try 
     { 
      int constId = 123; 
      string toEmail = ""[email protected]" 
      string mailBody = "Your Voucher"; 
      MemoryStream pdfStream = new MemoryStream(pdfVoucher_file(sk, constId, voucher_code)); 
      Attachment pdf = new Attachment(pdfStream, "Voucher_" + voucher_code.Trim() + ".pdf", "application/pdf"); 

      MailMessage mail = new MailMessage() 
      { 
       Subject = "Your Gift Voucher", 
       Body = mailBody, 
       From = new MailAddress("[email protected]") 
      }; 
      mail.To.Add(toEmail); 
      mail.IsBodyHtml = true; 
      mail.Attachments.Add(pdf); 

      SmtpClient client = new SmtpClient 
      { 
       Port = 25, 
       DeliveryMethod = SmtpDeliveryMethod.Network, 
       UseDefaultCredentials = false, 
       Host = "my.mailserver.com" 
      }; 
      client.Send(mail); 
     } 
     catch (Exception) { } 
    } 

beste Vermutung ist, dass Das passt zu mir was mit der Umwandlung in ein Byte [] -Objekt zu tun hat. Irgendwelche Ideen, wie ich die Qualität verbessern kann?

+0

Ok. Etwas peinlich. Das Problem war, dass eine gute Version in Chrome und schlecht über Adobe angesehen wurde. Wenn ich das schlechte in Chrome öffne, ist das in Ordnung. Ich denke, ich werde einfach versuchen, eine klarere Schriftart zu verwenden. – HuwD

Antwort

0

Könnten Sie versuchen, Ihre PDF in der folgenden Weise zu befestigen:

  1. Speichern Sie die Filestream als Datei auf Ihrer Festplatte. Deklarieren Sie die gespeicherte Datei vollständigen Pfad als Variable namens attachmentFilename
  2. Verwenden Sie den folgenden Code, um die gespeicherte Datei an Ihre E-Mail anhängen:

Code:

Attachment attachment = new Attachment(attachmentFilename, 
MediaTypeNames.Application.Pdf); 
ContentDisposition disposition = attachment.ContentDisposition; 
disposition.CreationDate = File.GetCreationTime(attachmentFilename); 
disposition.ModificationDate = File.GetLastWriteTime(attachmentFilename); 
disposition.ReadDate = File.GetLastAccessTime(attachmentFilename); 
disposition.FileName = Path.GetFileName(attachmentFilename); 
disposition.Size = new FileInfo(attachmentFilename).Length; 
disposition.DispositionType = DispositionTypeNames.Attachment; 

mail.Attachments.Add(attachment); 
  1. Die Datei erneut löschen, für ein gutes Messergebnis
Verwandte Themen