Ich entwickle eine Funktion in ASP.NET, um eine PDF-Datei von byte[]
herunterladen.Herunterladen von beschädigten PDF-Datei
So verwenden wir Winnovative.PdfConverter.GetPdfBytesFromHtmlString
Funktion, um die PDF-Bytes zu erhalten. Im unteren Code ist die Variable data
eine byte[]
, die von
Winnovative.PdfConverter.GetPdfBytesFromHtmlString
zurückgegeben wird.
Daher hat die data
Variable alrady die Bytes, die in der PDF-Datei geschrieben werden müssen.
HINWEIS: Wenn ich File.WriteAllBytes("a path", data)
mache, wird eine PDF-Datei erstellt und kann gelesen werden und ist nicht beschädigt.
Der Grund, warum ich HttpResponse
verwenden möchte, ist, weil ich möchte, dass die Datei heruntergeladen wird, weil das ist, was der Client will.
Kurz gesagt, ich möchte den Code unten geschrieben, um die byte[] data
Variable zu nehmen, schreiben Sie es in eine PDF-Datei und laden Sie es herunter.
Es folgt der Code:
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.Cache.SetCacheability(HttpCacheability.Private);
response.CacheControl = "private";
response.AddHeader("Content-Type", "binary/octet-stream");
response.AddHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"; size=" + (object)data.Length);
response.AddHeader("Content-Length", data.Length.ToString((IFormatProvider)CultureInfo.InvariantCulture));
response.Flush();
response.BinaryWrite(data);
response.Flush();
response.End();
Wenn ich die Web-App laufen der Download erfolgt glatt, aber die Datei nicht, wenn sie geöffnet zu laden.
Das sollte 'application/octet-Stream' – SLaks
@SLaks für die Antwort danken Ihnen, aber die Datei heruntergeladen werden noch beschädigt. Obwohl, jetzt kann ich Fehlermeldung sehen: 'Fehler: Datei öffnen. 0x80410108 - E - Der Dateiende-Marker wurde nicht gefunden. 0x8041010A - E - Das Schlüsselwort 'startxref' oder die XRef-Position wurde nicht gefunden. Recover XREF-Tabelle. 0x80410306 - E - Die "Length" -Taste des Stream-Objekts ist falsch. - Objekt Nr .: 20 0x80410307 - E - Das Schlüsselwort "endstream" fehlt. - Objekt Nr .: 20' – austin
Wie groß ist die heruntergeladene Datei? Null? –