【问题标题】:IE10 / Edge PDF not showing correct valuesIE10 / Edge PDF 未显示正确值
【发布时间】:2016-04-08 16:25:21
【问题描述】:

所以我有一个 PDF,它是通过打开模板、修改某些字段的值、然后保存来动态创建的。

作品:

  • 如果我在 Chrome 中打开文件,我的值是正确的。
  • 如果我将文件保存到磁盘并使用 Adob​​e Reader DC(或其他任何名称)打开它,我会得到正确的值。

不起作用:

  • 当我在 IE 10 中打开文档时,它会在 Edge 中打开,并显示字段的“默认”值。
  • 当我将文件保存到磁盘并使用 IE 打开时,它显示“默认”值。
  • 当我使用“PDF 阅读器 - 文档查看器和管理器”打开文件时,它会显示“默认”值。

我使用的是 Windows 10,我正在处理的应用程序是在 ASP.Net 中完成的。无论我返回 FileStreamResult、FilePathResult 还是 File,它的工作方式都是一样的。

我现在很确定问题出在微软的产品上,而不是我的代码上。

知道为什么 Microsoft 产品无法正确打开我的 PDF 文件吗?是否必须以某种特定方式或其他方式将它们展平?

编辑(在 cmets 中要求提供更多信息):

  • 文档是使用 PdfSharp 创建的。
  • 它们具有动态替换为值的字段(即 [MyFieldA] 替换为“ActualValueA”)。
  • 一旦将合并字段替换为实际值,将使用File.WriteAllText(fileName,fileText); 写入文件,其中通过File.ReadAllText(fileTemplateName); 获取fileText

比较不稳定的字段的图像:

【问题讨论】:

  • 您必须提供有关如何创建文档以及如何填充 IE 下似乎缺少的数据的更多详细信息。
  • @WiktorZychla 我在帖子底部添加了更多信息。我是第一次深入研究文档创建过程,并会在我找到信息时不断更新。一位同事提出的一个理论是文档模板是在 Acrobat 5 中创建的,而 IE10/Edge 无法充分处理,因为另一位同事对在 Acrobat 6 中创建的模板(与 IE10 兼容)有问题/边缘)。
  • 请分享一个示例 PDF 来说明问题以供分析。
  • 由于保密协议,我不能这样做。不过我会给出一段 pdf 的屏幕截图
  • @mkl - 我添加了差异的 sn-p。这与使用不同程序打开时显示的完全相同的文件中的完全相同的位置。

标签: asp.net internet-explorer pdf microsoft-edge


【解决方案1】:

所以我找到了问题的解决方案,看来这可能是一个双重的事情。

我认为其中一个难题是用于创建 PDF 的内存流。它是在内部范围中声明的,在 PdfReader.Open 调用中用于分配给在外部范围中声明的 var,然后范围结束,而 var 仍在使用中。我将 memorystream 声明移动到 var 声明所在的外部范围,以便它们位于同一范围内。此外,内存流没有通过memoryStream.Close() 调用或using (var memoryStream = new MemoryStream()) { } 块关闭。所以我加了一个电话到memoryStream.Close()

另一部分是 PDF 模板表单字段具有一些默认显示值。微软的东西(Edge、PDF Viewer)似乎无法获取插入的值,而是读取字段的默认显示值并显示这些值。删除所有默认显示值后,Edge 开始打开 ​​PDF 并正确显示值。

由于这两个部分是一前一后完成的,因此我不能肯定它们在其中发挥了相同的作用,但这是为使值开始正确显示而进行的仅有的两个更改。我的直觉是问题出在默认显示值和 Edge 上。

【讨论】:

  • 关于第一个可能的原因:由于您在问题中没有显示任何可用的代码,因此没有人可以在不疯狂猜测的情况下给出该方向的提示。关于第二个可能的原因:除了普通字段值之外,PDF 表单字段还可以提供外观流(关于布局的字段内容)。然后,查看者可以选择显示该预布局的外观流或使用普通字段值从头开始创建一个。可能这样的外观流是您的默认显示值。请注意,有些预览器无法从头开始创建。
  • 很有可能。我盲目地遇到了这个错误,以前没有在这方面工作过。我只是碰巧是小组中的“臭虫斗牛犬”,在解决之前不能放手。
猜你喜欢
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-02
相关资源
最近更新 更多