尝试在 Edge 中打开 PDF 文件显示“某些东西使此 PDF 文件无法打开”错误

Posted

技术标签:

【中文标题】尝试在 Edge 中打开 PDF 文件显示“某些东西使此 PDF 文件无法打开”错误【英文标题】:Trying to open PDF File in Edge shows "Something's keeping this PDF file from opening" error 【发布时间】:2019-11-25 05:27:05 【问题描述】:

我正在尝试在 Microsoft Edge 浏览器中打开 PDF 文件。 PDF 文件是使用 Angular 8 中的 jsPDF 库生成的。我编写的代码如下:

import  Component, OnInit  from '@angular/core';
import * as data from '../dummy.json';
import * as jsPDF from 'jspdf';
import 'jspdf-autotable';

@Component(
  selector: 'app-create-pdf',
  templateUrl: './create-pdf.component.html',
  styleUrls: ['./create-pdf.component.css']
)
export class CreatePDFComponent implements OnInit 

  constructor()  

  ngOnInit() 
    debugger;
    var columns = [
      title: "ID", dataKey: "id",
      title: "Name", dataKey: "name", 
      title: "Country", dataKey: "country", 
  ];

  var rows = [
      "id": 1, "name": "Shaw", "country": "Tanzania",
      "id": 2, "name": "Nelson", "country": "Kazakhstan",
      "id": 3, "name": "Garcia", "country": "Madagascar",
  ];

  var doc = new jsPDF('p', 'pt');
  doc.autoTable(columns, rows, 
      styles: fillColor: [100, 255, 255],
      columnStyles: 
        id: fillColor: 255
      ,
      margin: top: 60,
      beforePageContent: function(data) 
        doc.text("Header", 40, 30);
      
  );
      let string = doc.output("datauristring");
      let file = this.dataURLtoFile(string,"Report.pdf");
      var url = URL.createObjectURL(file);
      var newWindow = window.open();
      newWindow.document.open();
      newWindow.document.write('<html><body><object data = "'+url+'" width = "100%" height = "100%" type = "application/pdf"></object></body></html>');    
    
    dataURLtoFile(dataurl, filename) 
      var arr = dataurl.split(','),
          mime = arr[0].match(/:(.*?);/)[1],
          bstr = atob(arr[1]), 
          n = bstr.length, 
          u8arr = new Uint8Array(n);

      while(n--)
          u8arr[n] = bstr.charCodeAt(n);
      
      return new File([u8arr], filename, type:mime);
     
  

当我在 Google Chrome 中运行代码时,文件会打开。但是,当我在 Microsoft Edge 中尝试时,屏幕显示 “无法打开 PDF,此 PDF 无法打开” 错误。我尝试清除浏览器的缓存,但仍然显示错误。有人可以通过提供解决方案来帮助我吗?

注意我附上错误消息的屏幕截图供您参考。

Screenshot of Error

提前致谢。

【问题讨论】:

您是否尝试过其他浏览器,例如 Chrome 或 Firefox 边缘控制台(或开发者工具)中的任何错误??? @HirasHaris 是的。我试过谷歌浏览器。它在 Chrome 中运行良好。问题只显示在边缘 @SriVenkataPavanKumarMHS,我在控制台中看不到任何具体错误。 如果是应该出现的 polyfills 问题...让我们看看,我看到 github issue,如果版本是 edge 11,我认为 promise 可能有问题...我不知道这是否有帮助,但尝试为 promise 添加一个 polyfill 【参考方案1】:

不确定这是否是您 4 天前发布的同一问题。

PDF File generated using jsPDF doesn't show on Microsoft Edge

我再次尝试根据新错误进行研究,我发现如果您安装了任何其他 pdf 查看器来查看 pdf,则可能会出现此错误。它可能会中断 Edge 并导致此错误。

您可以尝试参考以下几点可能有助于解决此问题。

(1) 将 Microsoft Edge 设置为默认 PDF 查看器。

(2) 删除 Microsoft Edge 中的缓存。

(3) 修复 Microsoft Edge。

详细步骤可以参考以下链接。

Couldn’t open PDF in Edge, Something’s keeping this PDF from the opening

【讨论】:

Hey Deepak,这与我 4 天前发布的那个问题有关。现在我认为这是与 Edge 浏览器相关的一些问题。无论如何,我会检查链接,按照步骤操作并让您知道结果。谢谢! 我按照这些步骤操作,但它没有解决了问题。 尝试在Edge浏览器中手动打开任何pdf文件并检查是否能够打开该文件。也尝试在其他机器上运行相同的代码来验证问题。它可以帮助了解问题是在所有机器上产生还是与特定机器有关。 此问题由我公司的 QA 团队发布。他们在 Edge 版本 44 中进行测试时发现了这个错误。我使用的 Edge 版本是 41。所以我认为这不是特定于机器的错误。关于您所说的,当我尝试使用 Edge 在计算机中打开 PDF 文件时,它会打开。没有问题。但是当我将 base64 字符串传递给 iframe src 时,它不会呈现。

以上是关于尝试在 Edge 中打开 PDF 文件显示“某些东西使此 PDF 文件无法打开”错误的主要内容,如果未能解决你的问题,请参考以下文章

打开PDF修改文字的时候,显示本页面存在错误,Acrobat 可能无法正确显示页面,请联系PDF文档创建者

在应用程序中打开资产文件 pdf

js判断ie和edge是否安装Adobe Reader PDF阅读器

我正在尝试将 pdf 文件从节点服务器下载到反应客户端,但是当我打开它时,它显示为空白

UIDocumentInteractionController 无法打开 pdf 文件

使用 Edge 从批处理文件全屏启动 Powerapp