2017-01-13 4 views
1

Ich versuche, PDF in einem neuen Tab mit Asp.net mvc Controller zu öffnen. es richtig in neuem Tab öffnen, aber der Name des Dokuments zeigt nicht hier ist mein CodePDF-Dokument im neuen Browser anzeigen

public ActionResult ViewDocument() 
{ 
byte[] docFileArr=...... 
var cntdn = new System.Net.Mime.ContentDisposition 
       { 
        FileName = DocumentName, 
        Inline = true, 
       }; 
       Response.AppendHeader("Content-Disposition", cntdn .ToString()); 
       return File(docFileArr, "application/pdf"); 

} 

Öffnen des Dokuments in einem neuen Fenster richtig, aber es den Namen des Controllers zeigt nicht nur den Namen des Dokuments. Bitte schauen Sie in den Anhang.

Vielen Dank im Voraus für die Hilfe enter image description here

+0

Sie können dies manuell tun, indem Sie Methoden in http://stackoverflow.com/questions/1465434/edit-metadata-of-pdf-file-with-c-sharp verwenden oder die zusätzlichen Metadaten von Adobe verwenden: http: // stackoverflow .com/questions/22136043/Ändern-PDF-Titel-in-Browser-Fenster. –

Antwort

0

Web-Browser verwenden tatsächlich Metadaten in PDF-Dateien enthalten, um den Titel anzuzeigen. Auf diese Weise erhält Ihre Datei den gleichen Titel ohne Rücksicht darauf, wie sie geladen wird (von Ihrer .NET App, vom Desktop nach dem Download usw.).

Sehen Sie diesen Artikel auf, wie von Adobe zum Anzeigen und Bearbeiten von Metadaten, mit Acrobat: https://helpx.adobe.com/acrobat/using/pdf-properties-metadata.html

0

Eine Möglichkeit, dies zu erreichen, ist der Titel in den Metadaten des PDF einzustellen (entweder bei der Erstellung der PDF oder Manipulation es, bevor der Download beginnt). Dies wurde durch die bereits gegebenen SO-Fragen abgedeckt. Ein anderer Ansatz besteht darin, eine neue Registerkarte zu öffnen, eine eigene HTML-Seite zu laden, die von einer ASP.NET MVC View generiert wird, die selbst die PDF-Datei einbettet, die von der ViewDocument-Aktion bereitgestellt wird (ein besserer Name wäre DownloadDocument).

Die HTML-Seite würde einen Titel in ihrem HTML-Header haben, der vom Browser angezeigt würde. Z.B. die Ansicht aussehen kann (nur die Idee zu geben):

@{ 
    Layout = null;   
} 
<!DOCTYPE html> 
<html height="100%"> 
<head> 
    <meta charset="utf-8" /> 
    <title>@Model.Caption</title> 
    <script src="/js/pdfobject.js"></script> 
    <style> 
     .pdfobject-container { 
      height: 96vh; 
      width: 99vw; 
     }     
    </style> 
</head> 
    <body height="100%"> 

    <div id="pdf" height="100%"></div> 
    <script>PDFObject.embed("@Model.DownloadUrl", "#pdf");</script> 
    </body> 
</html> 

Es nutzt die PDObject.js Bibliothek PDF zu erleichtern und weniger fehleranfällig Einbettung.

Verwandte Themen