Shades88
Shades88

Reputation: 8360

How to open a pdf file new browser window in javascript

I need to open a pdf file in new browser tab. How to do this. I was using

var docLocation = '../downloads/doc.pdf';
window.open(docLocation,"resizeable,scrollbar"); 

But it opens a download dialog box of the browser. How to achieve this ?

Upvotes: 11

Views: 88502

Answers (5)

BlackMagic
BlackMagic

Reputation: 5778

This code will open a pdf document in a full window from JavaScript

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

A function to open windows would look like this:

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

Upvotes: 6

aggaton
aggaton

Reputation: 3350

I tried all of the above solutions and none of them worked for me, I'm running javascript on top of mvc 3, and razor, adobe 11 installed as add-on on ie, Chrome and Firefox. Here is what I did in order to get it to work on all above browsers.

Made PDF controller, called from javascript like this

in razor code for main view:

    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);

controller ReportController.cs:

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

ViewModel PDFResult.cs:

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

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

View PDF.cshtml:

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

Upvotes: 0

Andrey M.
Andrey M.

Reputation: 3806

Make sure the Content-Type header is 'application/pdf' and not 'application/octet-stream'

Upvotes: 3

Bachask8
Bachask8

Reputation: 428

here

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

you need to have installed reader in your pc

Upvotes: 4

Jamie Dixon
Jamie Dixon

Reputation: 54021

The ability to display the pdf is entirely dependent on whether the user has a plugin available to display the pdf and also has their settings set to treat pdf files this way.

There are some flash widgets out there that can be used to present pdf content to the user but to directly answer your question, you cannot control the users preferences for how they chose to handle pdf files.

Upvotes: 3

Related Questions