Javascript 使用JS在Chrome中以PDF格式打印页面并将其打开

Javascript 使用JS在Chrome中以PDF格式打印页面并将其打开,javascript,google-chrome,pdf,Javascript,Google Chrome,Pdf,我有一个内部网站,有很多不同的页面,所有页面都有一个可打印的版本,仅由CSS控制。我的用户使用Chrome的“打印/另存为PDF”菜单命令创建PDF。我想知道是否可以使用JavaScript从按钮启动另存为PDF并自动打开保存的PDF(实际上保存并不重要,只需在新选项卡上查看即可) 铬唯一的解决方案是好的。如果需要安装Chrome扩展,这也不是问题。只要我不必为每个页面布局编写额外的PDF呈现代码,一切都可以。html嵌入标记显示带有打印和下载选项的PDF。根据页面的设置,您可以将一个元素附加到

我有一个内部网站,有很多不同的页面,所有页面都有一个可打印的版本,仅由CSS控制。我的用户使用Chrome的“打印/另存为PDF”菜单命令创建PDF。我想知道是否可以使用JavaScript从按钮启动另存为PDF并自动打开保存的PDF(实际上保存并不重要,只需在新选项卡上查看即可)


铬唯一的解决方案是好的。如果需要安装Chrome扩展,这也不是问题。只要我不必为每个页面布局编写额外的PDF呈现代码,一切都可以。

html嵌入标记显示带有打印和下载选项的PDF。根据页面的设置,您可以将一个元素附加到某个位置,并通过用户在pdf名称旁边看到的按钮动态填充pdf源。 例如

HTML:


一些PDF名称已打开
Javascript:

    function displayEmbeddedPdf (event){
      event.preventDefault();
      let pdfSource = $(this).data("pdf");

      let pdfDisplay=`<embed class="embed-responsive-item embedded-pdf" 
      src="https://via.placeholder.com/150#view=FitH">`

      $(this).parent().append(pdfDisplay);
    }

    $( document ).ready(function() {
      $(".open-pdf").click(displayEmbeddedPdf) 
    });
函数显示嵌入PDF(事件){
event.preventDefault();
让pdfSource=$(this.data(“pdf”);
让pdfDisplay=``
$(this.parent().append(pdfDisplay);
}
$(文档).ready(函数(){
$(“.open pdf”)。单击(displayEmbeddedPdf)
});
我在下面的空白处使用了一个图像占位符,但您可以改为 插入pdfSource变量以访问目录中的源。。。阿尔索 请注意,嵌入标记上的“嵌入响应项”类来自 推特引导和帮助响应格式。此外,“#view=FitH”是一个开放参数。以下是有关打开参数的更多信息:

请参阅此代码笔上的代码:


下面是一个嵌入式pdf的示例:

无法强制浏览器将某些内容打印为pdf,甚至无法向打印机发送请求,最好的方法是使用JavaScript中的
print()
函数

可以这样做的一种方法是将其设置为iframe对象并按如下方式打印:

document.getElementById('content-frame').contentWindow.window.print();

这将使它为iFrame发送一个打印菜单,只打印iFrame中的内容。

你找到解决方案了吗?没有。我教我的用户如何从Chrome的菜单打印。@OzgurSar,为了使用它,你可以使用
html2canvas
jsPDF
。是一个类似的答案。@MyJobistBehappy是的,我知道pdf库,但在这种特定情况下,我只想了解是否可以触发chrome的另存为pdf选项。@OzgurSar,您不能触发另存为pdf,但可以使用
window.print()
以显示“打印”对话框。我很惊讶您在这个对话框上打了复选标记。我觉得你没有回答用户的问题。您的回答意味着PDF已经生成,并且正在某处提供。我想OP是在问他如何制作一个按钮,它基本上复制了“CMD+P”,然后选择“另存为PDF”,然后单击“保存”,触发新创建的PDF作为文件下载或在新选项卡中打开。谢谢你的回答,但这不是问题的答案。提问者Arthur询问是否可以使用javascript触发Chrome的
另存为PDF
功能。您已经可以通过从打印菜单中选择来手动访问它。明白,据我所知,未经用户同意,无法让Chrome、Firefox等保存PDF。
    function displayEmbeddedPdf (event){
      event.preventDefault();
      let pdfSource = $(this).data("pdf");

      let pdfDisplay=`<embed class="embed-responsive-item embedded-pdf" 
      src="https://via.placeholder.com/150#view=FitH">`

      $(this).parent().append(pdfDisplay);
    }

    $( document ).ready(function() {
      $(".open-pdf").click(displayEmbeddedPdf) 
    });