2016-11-11 7 views
0

Ich versuche, ImageData als PDF-Datei im Serververzeichnis zu speichern. Html5Canvas imageData wurde an den Server gesendet und nach der Konvertierung in Bytes Array versucht, als PDF-Datei zu speichern. Die Datei wurde auf dem angegebenen Pfad erfolgreich generiert, aber die generierte Datei wird in den meisten PDF-Leseprogrammen (z. B. Adobe Reader, Foxit Reader usw.) nicht korrekt geöffnet und zeigt einen Fehler, der entweder beschädigt oder beschädigt ist, aber im MS Edge-Browser korrekt geöffnet wurde. Ich möchte, dass sie auch einen gemeinsamen PDF-Reader zeigen. Können Sie bitte die Lösung vorschlagen? Hier ist mein serverseitiger Code.C# generierte PDF-Dateien werden in PDF-Leseprogrammen nicht geöffnet. Fehler zeigt beschädigte oder beschädigte Datei

public static string SaveImage(string imageData, string userEmail, int quantity) 
    { 
     string completePath = @"~\user-images\"; 
     string imageName = "sample_file2.pdf"; 
     string fileNameWitPath = completePath + imageName; 
     byte[] bytes = Convert.FromBase64String(imageData); 
     File.WriteAllBytes(HttpContext.Current.Server.MapPath(fileNameWitPath), bytes); 
    } 

gleiche Leistung erzeugt für diesen Code

 FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(fileNameWitPath), FileMode.OpenOrCreate); 
     fs.Write(bytes, 0, bytes.Length); 
     fs.Close(); 

und für diese auch.

using (FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(fileNameWitPath), FileMode.Create)) 
     { 

      using (BinaryWriter bw = new BinaryWriter(fs)) 
      { 

       byte[] data = Convert.FromBase64String(imageData); 

       bw.Write(data); 

       bw.Close(); 
      } 

     } 
+0

Sie sind also ein PDF im Browser zu erstellen? Da Sie hier keine Conversions vornehmen, werden 0Text und iTextSharp als freie/Open-Source-Software freigegeben –

Antwort

1

Wenn Sie nur eine Rasterbild-Format-Datei speichern (wie PNG oder JPG ein) mit einer .PDF Dateierweiterung sie es nicht eine PDF-Datei machen; Es bleibt immer noch eine Bilddatei nur mit einer anderen Erweiterung. Es funktioniert wahrscheinlich in einigen Browsern, weil sie die Erkennung von Dateiformaten durchführen können, die nicht nur auf der Erweiterung basieren.

Um eine aktuelle PDF-Datei zu erzeugen, müssen Sie eine Konvertierung durchführen. Betrachten Sie eine der folgenden Bibliotheken dafür:

+1

. Freie/Open-Source-Software ist * lizenziert *. Im Fall von iText (Sharp) ist die Lizenz AGPL. Mit der AGPL können Sie die Software kostenlos nutzen, solange Sie Ihre eigene Software unter derselben Lizenz vertreiben. Dies ähnelt der Lizenz, die vorhanden ist, wenn Sie Code verwenden, der in Stack Overflow gefunden wurde: https://www.eurostafgroup.com/media-hub/how-cani-i-use-code-snippets-found-on-stack -overflow-65809/ –

+1

@BrunoLowagie danke für die Bearbeitung. In der Tat ist es wichtig zu prüfen, was "frei" in einem bestimmten Fall bedeutet, bevor etwas verwendet wird. Ich fügte auch hinzu, dass "PDFSharp" unter viel weniger strenger "MIT License" lizensiert ist. –

+1

In der Tat: Ich habe viele Vorträge über Lizenzierung gehalten, und meiner Erfahrung nach sind sich Entwickler nicht immer der Auswirkungen der Verwendung von freier/Open-Source-Software bewusst. Siehe zum Beispiel: [eine Einführung in IP und Recht] (http://www.slideshare.net/blowagie/open-source-an-introduction-to-ip-and-legal) und [Wie können große Open-Source-Projekte sein monetisiert?] (http://www.slideshare.net/blowagie/how-can-large-open-source-projects-be-moneted) –

Verwandte Themen