diff --git a/DXApp.TemplateKitProject/Pages/Invoices/Details.cshtml b/DXApp.TemplateKitProject/Pages/Invoices/Details.cshtml index 85bda12..d0f8b2b 100644 --- a/DXApp.TemplateKitProject/Pages/Invoices/Details.cshtml +++ b/DXApp.TemplateKitProject/Pages/Invoices/Details.cshtml @@ -16,10 +16,10 @@ @if (!string.IsNullOrEmpty(Model.Invoice?.ResultFilePath)) { - + } @if (Model.Invoice is null) diff --git a/DXApp.TemplateKitProject/Pages/Invoices/DocumentViewer.cshtml b/DXApp.TemplateKitProject/Pages/Invoices/DocumentViewer.cshtml deleted file mode 100644 index 2add8b7..0000000 --- a/DXApp.TemplateKitProject/Pages/Invoices/DocumentViewer.cshtml +++ /dev/null @@ -1,33 +0,0 @@ -@page -@model DXApp.TemplateKitProject.Pages.Invoices.DocumentViewerModel -@{ - ViewData["Title"] = "Dokument Viewer"; - var pdfUrl = Model.PdfUrl; -} - -
-
-
Rechnung @Model.Id - Dokument
-
- Zurück zur Übersicht - - - DevExpress Viewer (experimental) - -
-
- -
- @* Solide, funktionierende Baseline: Browser-internen PDF-Renderer verwenden *@ - -
- - @* Hinweis: - - Diese Seite zeigt aktuell das PDF per einfachem iframe (funktioniert zuverlässig). - - Nächster Commit: wir ersetzen iframe durch DevExpress WebDocumentViewer oder laden diesen zusätzlich. - - Der Link "DevExpress Viewer (experimental)" ist ein Platzhalter; wir implementieren die Route /Invoices/DocumentViewerDevExpress in einem der nächsten Schritte. - *@ -
\ No newline at end of file diff --git a/DXApp.TemplateKitProject/Pages/Invoices/DocumentViewer.cshtml.cs b/DXApp.TemplateKitProject/Pages/Invoices/DocumentViewer.cshtml.cs deleted file mode 100644 index 021c7fc..0000000 --- a/DXApp.TemplateKitProject/Pages/Invoices/DocumentViewer.cshtml.cs +++ /dev/null @@ -1,17 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace DXApp.TemplateKitProject.Pages.Invoices; - -public class DocumentViewerModel : PageModel -{ - [BindProperty(SupportsGet = true)] - public int Id { get; set; } - - public string PdfUrl => $"/Invoices/ViewPdf?id={Id}"; - - public void OnGet() - { - // Keine serverseitige Logik nötig für die erste Version. - } -} \ No newline at end of file diff --git a/DXApp.TemplateKitProject/Pages/Invoices/ViewPdf.cshtml.cs b/DXApp.TemplateKitProject/Pages/Invoices/ViewPdf.cshtml.cs index 83d5017..a13f182 100644 --- a/DXApp.TemplateKitProject/Pages/Invoices/ViewPdf.cshtml.cs +++ b/DXApp.TemplateKitProject/Pages/Invoices/ViewPdf.cshtml.cs @@ -18,6 +18,7 @@ public class ViewPdfModel : PageModel public async Task OnGetAsync(int id) { + // Sicherheit: defensive checks, gleiche Logik wie CustomReportStorageWebExtension var invoice = await _db.ZugferdInvoices .AsNoTracking() .FirstOrDefaultAsync(i => i.Id == id); @@ -34,10 +35,6 @@ public class ViewPdfModel : PageModel var bytes = await System.IO.File.ReadAllBytesAsync(invoice.ResultFilePath); _logger.LogInformation("ViewPdf: Invoice {Id} ausgeliefert ({Size} Bytes).", id, bytes.Length); - // Wichtig: keine "attachment" Content-Disposition setzen - // wir setzen inline (oder lassen es weg) damit Browser im Viewer darstellt - Response.Headers["Content-Disposition"] = $"inline; filename=\"{Path.GetFileName(invoice.ResultFilePath)}\""; - - return File(bytes, "application/pdf"); + return File(bytes, "application/pdf", $"{Path.GetFileName(invoice.ResultFilePath)}"); } } \ No newline at end of file