用 JS 下载 html window 对象

Download html window object with JS

我这里有这个 iframe,我想加载里面有 pdf 的 window 页面,js 函数 print() 只显示页面,我想自动下载它,下面是完整代码 (我也试过 jspdf)。

<iframe id="conteudoIframe" src="https://eproc.trf4.jus.br/eproc2trf4/controlador.php?acao=acessar_documento_publico&doc=41625504719486351366932807019&evento=20084&key=0562cc6eddee0cc4a81dd869f92328dceab34deeaa59f4a33c43da6361cf42d6&hash=08920b364dc8433ad071d6b10c7e3817"  name="superior" width="100%" height="560px"></iframe>

<script>

    downloadPdfFromIframe();

    function downloadPdfFromIframe() {
        var script = document.createElement('script');
        script.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/1.3.2/jspdf.min.js';
        document.head.appendChild(script);
        script.onload = () => { setTimeout(download(), 20000); };

        function download() {

            var myIframe = document.getElementById("conteudoIframe").contentWindow;

            myIframe.focus();
            myIframe.print();
            myIframe.close();

            var pdf = new jsPDF();

            pdf.fromHTML(myIframe);
            pdf.save('test.pdf');

            return false;
        }
    }

</script>

Iframes 只是一个 window 到远程对象,因此在查看它们时显示已经下载的 html 环绕声和已经下载的 PDF,但 PDF 是独立的它可以在之前或之后下载框架,您可以在打印 html 对话框后面看到 pdf。所以 PDF 位于另一个应用程序中,如 HTML.

的第二个浏览器视图中所示

因此您必须 save/print 一次选择一个 。 Frame object 或 Pdf object,同时获得两者并非不可能,只需要使用合适的应用程序(而不是浏览器)即可。所以就像这里我有屏幕截图一样,这些画布可以很容易地保存或打印为 PDF。

基于 Chrome 的浏览器查看 iFrame 用于打印

基于 Firefox 的浏览器查看 iFrame 以使用任何其他方法打印,例如在第二个应用程序中打开 window。

如果您需要在浏览器之外下载这两个部分,请使用两个下载命令,所以这里是 my.pdf

curl -o my.pdf "https://eproc.trf4.jus.br/eproc2trf4/controlador.php?acao=acessar_documento_implementacao&doc=41625504719486351366932807019&evento=20084&key=0562cc6eddee0cc4a81dd869f92328dceab34deeaa59f4a33c43da6361cf42d6&hash=08920b364dc8433ad071d6b10c7e3817&termosPesquisados="