2011-10-11 17 views

Respuesta

4

La capacidad de mostrar el pdf depende completamente de si el usuario tiene un complemento disponible para mostrar el pdf y también tiene su configuración establecida para tratar archivos pdf de esta manera.

Existen algunos widgets de memoria que se pueden utilizar para presentar contenido de PDF al usuario, pero para responder directamente a su pregunta, no puede controlar las preferencias de los usuarios sobre cómo eligieron manejar archivos PDF.

2

aquí

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

es necesario tener instalado el lector en su PC

2

Asegúrese de que la cabecera Content-Type es 'application/pdf' y no 'application/octet-stream'

0

Probé todas las soluciones anteriores y ninguna de ellas funcionó, estoy ejecutando javascript en la parte superior de mvc 3 y razor, adobe 11 instalado como complemento, es decir, Chrome y Firefox. Esto es lo que hice para que funcione en todos los navegadores mencionados.

Hecho controlador de PDF, llamados de Javascript como esto

en código de máquina de afeitar de vista principal:

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 controlador:

[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; } 
} 

Ver PDF.cshtml:

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

Este código se abrirá un documento pdf en una ventana completa de JavaScript

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

Una función para abrir ventanas se vería así:

function openPDF(pdf){ 
    window.open(pdf); 
    return false; 
} 
Cuestiones relacionadas