在请求Web服务后,我得到以下答案(PDF文件流式传输)
%PDF-1.5
%µµµµ
1 0 obj
<</Type/Catalog/Pages 2 0 R/Lang(en-GB) /StructTreeRoot 10 0 R/MarkInfo<</Marked true>>>>
endobj
2 0 obj
<</Type/Pages/Count 1/Kids[ 3 0 R] >>
endobj
3 0 obj
................. continue .......................
到目前为止,我可以使用windows.open(application / pdf; base64,url)生成pdf文件。
我真正需要的是将pdf文档保存在存储中!
如何使用上面的响应生成PDF文件?
韩国社交协会
答案 0 :(得分:-2)
我在http://dogfeatherdesign.com/ttn_js做了一些与我的网站类似的事情,除了我从Canvas转到pdf文件,当用户点击打印按钮时。根据操作系统和浏览器的不同,下载会自动进行。 (注意:Safari对此不利。)我正在使用库html2canvas和jsPDF
这是我的代码:
$('#dte_onPrintClick').on('click', function(e) {
e.preventDefault();
html2canvas($("#canvas_dte"), {
onrendered: function(canvas) {
var imgData = canvas.toDataURL(
'image/png');
var doc = new jsPDF('p', 'mm', paperInfo.paperSize);
doc.addImage(imgData, 'PNG', 10, 10);
doc.save('output-file.pdf');
}
});
});
现在很明显你会从pdf转到pdf,但我猜你doc = new jsPDF(), doc.addXXX, doc.save(filename.pdf)
可能有一些优点。
更新: 如果没有pdf feed的细节,我不太清楚如何更有帮助,除了说你想要做的事情应该可以在大多数现代浏览器上实现。您可以通过上面列出的.save()调用(在很多但不是所有浏览器中)将pdf内容保存为没有用户输入的文件。
如果它是你正在寻找的黑客,你可以捕获pdf流,将其保存为隐藏div中的图像,然后将其转换回pdf并执行doc.save()函数。您必须添加冗长的时间延迟以确保Feed完成,图像填充等,但它应该是可行的。
我确实看到一个putstream()函数,getBlob()函数和getArrayBuffer()函数到jsPDF库,所以很可能其中一个直接用于帮助捕获pdf并生成一个存储文档,所有这些都在通过JavaScript飞行。
编辑#2:继续下载,no user interaction jsfiddle page。我真的很惊讶这种方式,但就是这样。我同意,通常文件保存需要用户干预,但这个下载的东西才有效。坦率地说,我也对此感到惊讶。