添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接





使用jspdf生成的pdf文档,网上一般都是如何下载到本地中,使用save()方法,但是现在并不想下载,而是直接显示在页面中。

output

查找了​ ​官方文档​ ​​,发现可以使用​ ​output​ ​方法:

output(type, options) → {string|window|ArrayBuffer|Blob|jsPDF|null|undefined}


源码: jspdf.js, line 3010


生成PDF文档。

若类型参数未定义,则输出是以字符串作为返回结果的PDF的原始体。

参数:

名称

类型

描述

type

string

标识一种可能的输出类型的字符串。

可能的值为:

‘arraybuffer’ -> (ArrayBuffer)

‘blob’ -> (Blob)

‘bloburi’/‘bloburl’ -> (string)

‘datauristring’/‘dataurlstring’ -> (string)

‘datauri’/‘dataurl’ -> (undefined) -> 将生成的位置更改为DataUrString/dataurlstring

’dataurlnewwindow’ -> (window | null | undefined) 如果不是全局窗口对象(节点),则引发错误

’pdfobjectnewwindow’ -> (window | null) 如果不是全局窗口对象(节点),则引发错误

’pdfjsnewwindow’ -> (wind | null)

options

Object | string

向PDF生成器提供一些附加信号的对象。

可能的选项是“文件名”

可以传递字符串而不是{filename:string},默认为“generated.pdf”

在新的窗口显示

使用的是​ ​dataurlnewwindow​ ​,这会打开一个新的窗口,

使用jsPDF让pdf显示在页面中_字符串

但是无法设置文件名称,点击下载也是没有反应,代码如下

doc.output('dataurlnewwindow', orderNo + ".pdf");

在本页面插入

还可以显示在当前页面

使用​ ​iframe​ ​或者​ ​embed​ ​标签

iframe

在html中设置元素:

<iframe id="iframe123" frameborder="0" ></iframe>

js:

document.getElementById("iframe123").src = doc.output('datauristring');//在iframe中显示

embed

html:

<div id="iframe123"> </div>

js:

let data = doc.output('datauristring', orderNo + ".pdf");
var objbuilder = '';
objbuilder += ('<embed width=\'100%\' height=\'100%\' src="');
objbuilder += (data);
objbuilder += ('" type="application/pdf" title="' + orderNo + '.pdf" />');
document.getElementById("iframe123").innerHTML = objbuilder

现在点击下载会有反应,但是文件名称无法设置

文件名称设置

最后看到一种方法,在生成PDF文档时,隐藏浏览器默认的pdf工具栏,然后使用​ ​save​ ​方法生成pdf文档。代码如下:

let data = doc.output('datauristring', orderNo + ".pdf");
var objbuilder = '';
objbuilder += ('<embed width=\'100%\' height=\'100%\' src="');
objbuilder += (data +'#toolbar=0);
objbuilder += ('" type="application/pdf" title="' + orderNo + '.pdf" />');
document.getElementById("iframe123").innerHTML = objbuilder

在生成的base64代码后面添加​ ​#toolbar=0​

使用jsPDF让pdf显示在页面中_字符串_02



Java中的阻塞和非阻塞IO包各自的优劣思考 NIO 设计背后的基石:反应器模式,用于事件多路分离和分派的体系结构模式。 反应器(Reactor):用于事件多路分离和分派的体系结构模式   通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞 与非阻塞 。所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序