嵌入 PDF 内容的问题
Posted
技术标签:
【中文标题】嵌入 PDF 内容的问题【英文标题】:Problems in Embed PDF content 【发布时间】:2021-07-13 15:33:09 【问题描述】:当文件很小时,这非常有效。一旦文件变大(> 1 MB)。无法再显示 PDF。
<embed src="@PDFContent" style="width: 100%;height: 930px;border: none;" frameborder="0" />
PDFContent = "data:application/pdf;base64," + Convert.ToBase64String(File.ReadAllBytes(@"Server:\Temp\test.pdf"));
文件在服务器上,而不是在 IISS 上。 可能是什么问题
【问题讨论】:
【参考方案1】:尝试使用<iframe>
,而不是<embed>
。
此外,将您的 base64 数据转换回二进制文件,打包在 Blob 中,然后将 iframe 的 src 设置为指向该 Blob 的 blob-URI -
const blob = base64ToBlob( base64, 'application/pdf' );
const url = URL.createObjectURL( blob );
const pdfWindow = window.open("");
pdfWindow.document.write("<iframe width='100%' height='100%' src='" + url + "'></iframe>");
function base64ToBlob( base64, type = "application/octet-stream" )
const binStr = atob( base64 );
const len = binStr.length;
const arr = new Uint8Array(len);
for (let i = 0; i < len; i++)
arr[ i ] = binStr.charCodeAt( i );
return new Blob( [ arr ], type: type );
如果这种方法不起作用,请尝试让您的<iframe>
直接指向 PDF 的 URL。
希望此解决方案适合您。
【讨论】:
谢谢,效果很好。是否还有可能将 iframe 集成到现有页面中?我不想有一个单独的窗口。我已经尝试过 div 的 innerhtml,但没有成功。 很高兴我的解决方案能对您有所帮助。请考虑接受我的回答,因为其他可能面临此问题的人也可以使用它。 关于在现有页面中使用以上是关于嵌入 PDF 内容的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PlayWright (python) 下载嵌入式 PDF?
如何使用 html5 和 jquery 在网页中显示 pdf 内容?