如何使用js自动下载PDF?

IT技术 javascript jquery pdf plugins google-chrome-extension
2021-02-23 01:16:13

我的场景是自动下载 PDF 文件,然后用户填写它,当点击 PDF 中的提交按钮时,它连接到 java servlet 并将其保存在数据库中。

1 - User click on Button
2 - JavaScript code run and PDF file download automatically
3 - open file using JavaScript automatically
4 - user fills & press submit
5 - after submit servlet code run and save data in db

在我的应用程序中,缺少第二点。请提供代码如何使用 JavaScript 与扩展程序交互以自动下载文件。我只想下载文件。

5个回答

使用下载属性

var link = document.createElement('a');
link.href = url;
link.download = 'file.pdf';
link.dispatchEvent(new MouseEvent('click'));
非常感谢。你能告诉我如何在 xhtml 中自动下载吗??我正在开发一个基于 java 的框架 liferay portlet,其中的视图是使用 xhtml 和 primefaces 设计的?
2021-05-01 01:16:13
@EhsaanIsrar 我们不能。浏览器通常使用用户设置下载文件。
2021-05-06 01:16:13
@EhsaanIsrar 您可以将答案标记为已接受,您可以吗?我不确定“在 xhtml 中自动”是什么意思。问题是关于 javascript 的,它应该可以正常工作。您可以在正文的末尾添加脚本标签等
2021-05-12 01:16:13
2020 年 6 月不能在最新的 chrome 和 Ubuntu 18.04 上工作,你能告诉我需要改变什么吗?由于下载的文件显示失败,没有文件错误并且无法打开文件,而不是 createElement('a'),我该如何给出任何 div 的 element-id?
2021-05-14 01:16:13
太好了。非常感谢。我们可以指定下载文件的路径吗??chrome 不要求路径并使用 javascript 或 HTML 以编程方式获取路径
2021-05-19 01:16:13

也可以在新窗口中打开 pdf 链接,让浏览器处理其余的:

window.open(pdfUrl, '_blank');

或者:

window.open(pdfUrl);
这个在新窗口打开pdf文件,有没有办法直接下载?
2021-05-06 01:16:13
这也有效,尽管新窗口会立即打开和关闭,这会导致用户体验不佳
2021-05-15 01:16:13
/* Helper function */
function download_file(fileURL, fileName) {
// for non-IE
if (!window.ActiveXObject) {
    var save = document.createElement('a');
    save.href = fileURL;
    save.target = '_blank';
    var filename = fileURL.substring(fileURL.lastIndexOf('/')+1);
    save.download = fileName || filename;
       if ( navigator.userAgent.toLowerCase().match(/(ipad|iphone|safari)/) && navigator.userAgent.search("Chrome") < 0) {
            document.location = save.href; 
// window event not working here
        }else{
            var evt = new MouseEvent('click', {
                'view': window,
                'bubbles': true,
                'cancelable': false
            });
            save.dispatchEvent(evt);
            (window.URL || window.webkitURL).revokeObjectURL(save.href);
        }   
}

// for IE < 11
else if ( !! window.ActiveXObject && document.execCommand)     {
    var _window = window.open(fileURL, '_blank');
    _window.document.close();
    _window.document.execCommand('SaveAs', true, fileName || fileURL)
    _window.close();
}
}

如何使用?

download_file(fileURL, fileName); //call function

来源:convertplug.com/plus/docs/download-pdf-file-forcefully-instead-opening-browser-using-js/

  1. 对于第二点,将 pdf 文件的完整路径放入某个 java 变量中。例如http://www.domain.com/files/filename.pdf

例如,您正在使用 php 并且 $filepath 包含 pdf 文件路径。

所以你可以写javascript来模拟下载对话框。

<script language="javascript">
    window.location.href = '<?php echo $filepath; ?>';
</script

上面的代码通过它的网址“ http://www.domain.com/files/filename.pdf将浏览器发送到pdf文件所以最后,浏览器会显示下载对话框到你机器上保存这个文件的位置。

我给出了完整的路径。我不明白你在说什么?请详细说明
2021-04-29 01:16:13
好吧,完整路径意味着如果您在浏览器地址栏中输入 pdf 的直接 url,您可以访问它。对?所以完整的 url 必须存在于 PHP 的 $filepath 变量中。
2021-05-01 01:16:13
抱歉,我想在下面说:应该是 pdf 文件的完全限定 url,如下所示: <script type="text/javascript"> window.location.href = ' domain.com/files/filename.pdf ' </script >
2021-05-07 01:16:13
window.location.href 告诉文件的 url 不是下载文件
2021-05-12 01:16:13
我试过这个:<script type="text/javascript"> window.location.href = 'file:///C:/Users/EHSAAN/Desktop/chrome%20extension/practice/abc.pdf'; </script>但它会打开文件而不是下载它
2021-05-21 01:16:13

请试试这个

(function ($) {
    $(document).ready(function(){
       function validateEmail(email) {
            const re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
            return re.test(email);
           }
       
       if($('.submitclass').length){
            $('.submitclass').click(function(){
                $email_id = $('.custom-email-field').val();
                if (validateEmail($email_id)) {
                  var url= $(this).attr('pdf_url');
                  var link = document.createElement('a');
                  link.href = url;
                  link.download = url.split("/").pop();
                  link.dispatchEvent(new MouseEvent('click'));
                }
            });
       }
    });
}(jQuery));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form method="post">
        <div class="form-item form-type-textfield form-item-email-id form-group">
            <input placeholder="please enter email address" class="custom-email-field form-control" type="text" id="edit-email-id" name="email_id" value="" size="60" maxlength="128" required />
        </div>
        <button type="submit" class="submitclass btn btn-danger" pdf_url="https://file-examples-com.github.io/uploads/2017/10/file-sample_150kB.pdf">Submit</button>
</form>

或者使用下载属性HTML5 中标记