如何在javascript中打开pdf文件新浏览器窗口
我需要在“新浏览器”选项卡中打开pdf文件。如何做到这一点。 我在用如何在javascript中打开pdf文件新浏览器窗口,javascript,Javascript,我需要在“新浏览器”选项卡中打开pdf文件。如何做到这一点。 我在用 var docLocation = '../downloads/doc.pdf'; window.open(docLocation,"resizeable,scrollbar"); 但它会打开浏览器的下载对话框。如何实现这一点?显示pdf的能力完全取决于用户是否有可用于显示pdf的插件,以及是否设置了以这种方式处理pdf文件的设置 有一些flash小部件可用于向用户显示pdf内容,但要直接回答您的问题,您无法控制用户选择如
var docLocation = '../downloads/doc.pdf';
window.open(docLocation,"resizeable,scrollbar");
但它会打开浏览器的下载对话框。如何实现这一点?显示pdf的能力完全取决于用户是否有可用于显示pdf的插件,以及是否设置了以这种方式处理pdf文件的设置 有一些flash小部件可用于向用户显示pdf内容,但要直接回答您的问题,您无法控制用户选择如何处理pdf文件的首选项。此处
<a href="javascript:void(0);" onclick="javascipt:window.open('YourPDF.pdf');" class="popup">Clic to open.</a>
您需要在pc中安装reader,确保内容类型标题为“application/pdf”,而不是“application/octet stream”我尝试了上述所有解决方案,但没有一个对我有效,我在mvc 3上运行javascript,在ie、Chrome和Firefox上安装razor、adobe 11作为附加组件。下面是我为了让它在上述所有浏览器上运行所做的工作 制作PDF控制器,从javascript调用,如下所示 在主视图的代码中:
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);
}
此代码将在
JavaScript
var pdf = MyPdf.pdf;
window.open(pdf);
打开窗口的函数如下所示:
function openPDF(pdf){
window.open(pdf);
return false;
}
投票被否决,因为这个答案已经过时了。
var pdf = MyPdf.pdf;
window.open(pdf);
function openPDF(pdf){
window.open(pdf);
return false;
}