2011-10-11 15 views

risposta

4

La possibilità di visualizzare il pdf dipende interamente dal fatto che l'utente disponga di un plug-in per visualizzare il pdf e ha anche le proprie impostazioni per il trattamento dei file PDF in questo modo.

Ci sono alcuni widget flash là fuori che possono essere usati per presentare il contenuto pdf all'utente, ma per rispondere direttamente alla tua domanda, non puoi controllare le preferenze degli utenti per come hanno scelto di gestire i file pdf.

2

qui

<a href="javascript:void(0);" onclick="javascipt:window.open('YourPDF.pdf');" class="popup">Clic to open.</a> 

è necessario avere installato il lettore nel vostro pc

2

Assicurarsi che l'intestazione Content-Type è 'application/pdf' e non 'application/octet-stream'

0

Ho provato tutte le soluzioni di cui sopra e nessuna ha funzionato per me, sto eseguendo javascript su mvc 3 e rasoio, adobe 11 installato come add-on su ie, Chrome e Firefox. Ecco cosa ho fatto per farlo funzionare su tutti i browser di cui sopra.

Realizzato regolatore PDF, chiamato da JavaScript come questo

nel codice rasoio per la vista principale:

var URL_OPEN_REPORT_PDF     = "@Url.Content("~/Report/OpenPDF/")"; 

javascript:

var sURL = URL_OPEN_REPORT_PDF; 
    sURL = AddURLParameter(sURL, "ReportArchive", moControl.treeOrganization.getUserData(sItemUI, "reportarchive")); 
    window.open(sURL); 

ReportController.cs del controller:

[Authorize] 
    [HttpGet] 
    public ActionResult OpenPDF(string ReportArchive) 
    { 
     PDFResult oPdfResult = new PDFResult(); 

     ReportArchive oReportArchive; 

     var serializer = new JavaScriptSerializer(); 
     oReportArchive = serializer.Deserialize<ReportArchive>(ReportArchive); 
     string FilePath = Server.MapPath(string.Format("~/Content/Reports/{0}", oReportArchive.FileName)); 

     WebClient User = new WebClient(); 

     Byte[] FileBuffer = User.DownloadData(FilePath); 

     if (FileBuffer != null) 
     { 
      oPdfResult.Length = FileBuffer.LongLength; 
      oPdfResult.FileBuffer = FileBuffer; 
      Response.BinaryWrite(FileBuffer); 

     } return View("PDF", oPdfResult); 
    } 

PDFResult.cs ViewModel:

public class PDFResult 
{ 
    /// <summary> 
    /// Content Length 
    /// </summary> 
    public long Length { get; set; } 

    /// <summary> 
    /// Content bytes 
    /// </summary> 
    public Byte[] FileBuffer { get; set; } 
} 

Vista PDF.cshtml:

@model Report.PDFResult 
@{ 
    Response.ContentType = "application/pdf"; 
    Response.AddHeader("content-length", Model.Length.ToString()); 
    Layout = null; 
} 
2

Questo codice si aprirà un documento PDF in una finestra piena di JavaScript

var pdf = MyPdf.pdf; 
window.open(pdf); 

Una funzione di aprire le finestre assomiglia a questo:

function openPDF(pdf){ 
    window.open(pdf); 
    return false; 
} 
Problemi correlati