Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以使用JavaScript或jquery将HTML页面保存为PDF?_Javascript_Jquery_Jquery Ui - Fatal编程技术网

是否可以使用JavaScript或jquery将HTML页面保存为PDF?

是否可以使用JavaScript或jquery将HTML页面保存为PDF?,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,是否可以使用JavaScript或jquery将HTML页面保存为PDF 详细内容: 我生成了一个HTML页面,其中包含一个表。它有一个按钮“另存为PDF”。如果用户单击该按钮,则该HTML页面必须转换为PDF文件 可以使用JavaScript或jquery吗?简言之:不可以。 第一个问题是对文件系统的访问,在大多数浏览器中,由于安全原因,文件系统默认设置为no。现代浏览器有时支持数据库形式的最小存储,或者您可以要求用户启用文件访问 如果您可以访问文件系统,那么将其保存为HTML并不是那么难(请

是否可以使用JavaScript或jquery将HTML页面保存为PDF

详细内容:

我生成了一个HTML页面,其中包含一个表。它有一个按钮“另存为PDF”。如果用户单击该按钮,则该HTML页面必须转换为PDF文件

可以使用JavaScript或jquery吗?

简言之:不可以。 第一个问题是对文件系统的访问,在大多数浏览器中,由于安全原因,文件系统默认设置为no。现代浏览器有时支持数据库形式的最小存储,或者您可以要求用户启用文件访问

如果您可以访问文件系统,那么将其保存为HTML并不是那么难(请参阅JS文档中的file对象),但PDF并不是那么容易。PDF是一种非常高级的文件格式,不适合Javascript。它要求您以Javascript不直接支持的数据类型(如单词和四边形)编写信息。您还需要预定义必须保存到文件中的字典查找系统。我相信有人可以让它工作,但所涉及的努力和时间会更好地学习C++或Delphi。
但是,如果用户允许您进行非限制访问,HTML导出应该是可能的

我会这样做,这不是防弹设计,您需要修改它

  • 用户单击另存为PDF按钮
  • 使用ajax向服务器发送一个调用
  • 服务器使用HTML生成的PDF URL进行响应,我非常成功地使用了ApacheFop
  • 处理ajax响应的js会执行location.href来指向js发送的URL,一旦加载该URL,它就会使用content disposition头作为附件发送文件,强制用户下载该文件
,用于创建pdf文件

然后可以将其转换为数据URI,并将下载链接插入DOM

但是,您需要自己编写HTML到pdf的转换

只需使用对打印机友好的页面版本,并让用户选择打印页面的方式

编辑:显然它的支持很少


因此,答案是编写您自己的PDF编写器,或者让现有的PDF编写器(在服务器上)为您编写PDF编写器。

您可以使用Phantomjs。下载并使用以下示例测试html->pdf转换功能

示例代码:

phantomjs.exe examples/rasterize.js http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/xhtml/index.html sample.pdf

是的,使用javascript非常容易。希望这段代码对你有用

你会需要这个


你好,这是H3标签
标线

生成PDF var doc=new jsPDF(); 变量specialElementHandlers={ “#编辑器”:函数(元素、渲染器){ 返回true; } }; $('#cmd')。单击(函数(){ doc.fromHTML($('#content').html(),15,15{ “宽度”:170, “elementHandlers”:specialElementHandlers }); doc.save('sample-file.pdf'); }); //此代码已收集但很有用,请单击下面的JSFIDLE链接。

使用JavaScript将HTML转换为PDf还有另一种非常明显的方法:使用在线API。如果您不需要在用户脱机时进行转换,这将很好地工作

是一个具有良好API并提供免费帐户的选项。我相信您可以找到许多备选方案(例如)

对于PdfMage API,您将有如下内容:

 $.ajax({
    url: "https://pdfmage.org/pdf-api/v1/process",
    type: "POST",
    crossDomain: true,
    data: { Html:"<html><body>Hi there!</body></html>" },
    dataType: "json",
    headers: {
        "X-Api-Key": "your-key-here" // not very secure, but a valid option for non-public domains/intranet
    },
    success: function (response) {
        window.location = response.Data.DownloadUrl;
    },
    error: function (xhr, status) {
        alert("error");
    }
});
$.ajax({
url:“https://pdfmage.org/pdf-api/v1/process",
类型:“POST”,
跨域:是的,
数据:{Html:“你好!”},
数据类型:“json”,
标题:{
“X-Api-Key”:“此处的密钥”//不太安全,但对于非公共域/内部网是有效的选项
},
成功:功能(响应){
window.location=response.Data.DownloadUrl;
},
错误:函数(xhr,状态){
警报(“错误”);
}
});

这可能是一个迟到的答案,但这是最好的选择:

纯javascript实现。
允许您仅按ID指定单个元素并对其进行转换。

是。例如,您可以通过使用解决方案

它有一个Javascript API,可以用不同的方式抓取和操作屏幕截图。为了在应用程序中使用它,您首先需要获得一个和免费的Javascript SDK

让我们来看一个简单的例子:

//first include the grabzit.min.js library in the web page
<script src="grabzit.min.js"></script>
//include the code below to add the screenshot to the body tag    
<script>
//use secret key to sign in. replace the url.
GrabzIt("Sign in to view your Application Key").ConvertURL("http://www.google.com").Create();
</script>
//首先在网页中包含grabzit.min.js库
//包括下面的代码以将屏幕截图添加到body标签
//使用密钥登录。替换url。
GrabzIt(“登录以查看您的应用程序密钥”).ConvertURL(“http://www.google.com)创建();
然后只需稍等片刻,图像将自动显示在页面底部,而无需重新加载页面

这是最简单的一个。有关图像处理、将屏幕截图附加到元素等的更多示例,请查看。

$('#cmd2')。单击(函数(){
变量选项={
//“宽度”:800,
};
var pdf=新的jsPDF('p','pt','a4');
pdf.addHTML($(“#content2”),-1220,选项,函数(){
保存('accept_card.pdf');
});
});

考场入场券
名称
桑塔努帕特拉
D.O.B.
//first include the grabzit.min.js library in the web page
<script src="grabzit.min.js"></script>
//include the code below to add the screenshot to the body tag    
<script>
//use secret key to sign in. replace the url.
GrabzIt("Sign in to view your Application Key").ConvertURL("http://www.google.com").Create();
</script>
$('#downloadPDF').click(function () {
    domtoimage.toPng(document.getElementById('content2'))
      .then(function (blob) {
          var pdf = new jsPDF('l', 'pt', [$('#content2').width(), $('#content2').height()]);
          pdf.addImage(blob, 'PNG', 0, 0, $('#content2').width(), $('#content2').height());
          pdf.save("test.pdf");
      });
});