嵌入 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】:

尝试使用&lt;iframe&gt;,而不是&lt;embed&gt;。 此外,将您的 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  );

如果这种方法不起作用,请尝试让您的&lt;iframe&gt; 直接指向 PDF 的 URL。

希望此解决方案适合您。

【讨论】:

谢谢,效果很好。是否还有可能将 iframe 集成到现有页面中?我不想有一个单独的窗口。我已经尝试过 div 的 innerhtml,但没有成功。 很高兴我的解决方案能对您有所帮助。请考虑接受我的回答,因为其他可能面临此问题的人也可以使用它。 关于在现有页面中使用

以上是关于嵌入 PDF 内容的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PlayWright (python) 下载嵌入式 PDF?

如何使用 html5 和 jquery 在网页中显示 pdf 内容?

如何播放/打开嵌入PDF的视频文件?

python使用fpdf创建pdf:写入hello world嵌入图片

前端怎么获取接口返回pdf文档内容 react

实现在线浏览PDF文件的方法