【问题标题】:Trying to open PDF File in Edge shows "Something's keeping this PDF file from opening" error尝试在 Edge 中打开 PDF 文件显示“某些东西使此 PDF 文件无法打开”错误
【发布时间】: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

标签: angular microsoft-edge jspdf


【解决方案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 时,它不会呈现。
猜你喜欢
  • 1970-01-01
  • 2013-04-25
  • 1970-01-01
  • 2013-02-18
  • 2019-07-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
相关资源
最近更新 更多