在HTML中嵌入PDF的推荐方法是什么?

iFrame吗? 对象? 嵌入?

Adobe是怎么说的呢?

在我的例子中,PDF是动态生成的,因此不能在刷新之前将其上传到第三方解决方案。


当前回答

要将文件流式传输到浏览器,请参阅Stack Overflow问题如何使用。net 2.0将PDF文件流式传输为二进制文件到浏览器-请注意,有一些小的变化,无论您是从文件系统提供文件还是动态生成文件,这都可以工作。

尽管如此,所引用的MSDN文章对世界的看法相当简单,因此您可能希望阅读通过HTTPS成功地将PDF传输到浏览器以及您可能需要提供的一些标题。

使用这种方法,iframe可能是最好的方法。有一个流文件的webform,然后将iframe放在另一个页面上,并将其src属性设置为第一个表单。

其他回答

在我得到嵌入base64编码PDF的问题之前,因为URI限制,所以任何超过2MB的文件都不会在Chrome上正确呈现。

我的解决方案是:

转换uri编码为Blob: 基于Blob生成临时DOM字符串。 const blob = dataURItoBlob(this.dataUrl); var temp_url = window.URL.createObjectURL(blob); 决定你想把iframe附加到DOM的位置: const target = document.querySelector(targetID); 目标。innerHTML =' <iframe src='${temp_url}' type="application/pdf"></iframe> .

要将文件流式传输到浏览器,请参阅Stack Overflow问题如何使用。net 2.0将PDF文件流式传输为二进制文件到浏览器-请注意,有一些小的变化,无论您是从文件系统提供文件还是动态生成文件,这都可以工作。

尽管如此,所引用的MSDN文章对世界的看法相当简单,因此您可能希望阅读通过HTTPS成功地将PDF传输到浏览器以及您可能需要提供的一些标题。

使用这种方法,iframe可能是最好的方法。有一个流文件的webform,然后将iframe放在另一个页面上,并将其src属性设置为第一个表单。

如果可能的话,使用本机解决方案,它总是最好的解决方案,因为它来自本机浏览器(使用embed或iframe),或者你可以使用这个小库来支持你:https://pdfobject.com

大多数人推荐使用著名的pdf。js。它一直工作得很好,直到我需要使用ShadowDOM。有些页面是空白的(白色),有些是黑色的。我不可能知道发生了什么,而且它正在制作中:)。

我发现这工作得很好,浏览器处理它在firefox。我没有检查IE…

<script>window.location='url'</script>

这是我对AXIOS和Vue.js所做的:

        axios({
            url: `urltoPDFfile.pdf`,
            method: 'GET',
            headers: headers,
            responseType: 'blob'
        })
        .then((response) => {
            this.urlPdf = URL.createObjectURL(response.data)
        })
        .catch((error) => {
            console.log('ERROR   ', error)
        })

将urlPDF动态添加到HTML:

<object width='100%' height='600px' :data='urlPdf' type='application/pdf'></object>