Others

为什么 PDF 会使查看器在某一特定页面上崩溃

平滑地滚动 PDF 40 页,然后点击第 41 页,然后观看查看器冻结、崩溃或显示混乱的图形工件。该文档的其余部分都很好。第41页就是问题所在。该特定页面上的某些内容正在破坏 PDF 查看器的渲染引擎,识别该内容将决定该文件是否可以修复或需要重新创建。

单页面崩溃几乎总是该页面内容的特定的、可识别的问题。

诊断特定于页面的崩溃需要隔离问题页面与正确呈现的页面的不同之处。 WukongPDF 的修复 PDF修复 PDF 功能可以解决某些页面级损坏,下面的诊断步骤可帮助您找到有问题的元素并决定如何修复它。

Why Does a PDF Crash the Viewer on One Specific Page

单页 PDF 崩溃的常见原因

图像损坏是最常见的原因。页面上嵌入的照片或图形已损坏查看者的解码器无法处理的图像数据。查看器尝试渲染图像,解码器遇到损坏,渲染引擎要么抛出导致查看器崩溃的错误,要么进入无限循环使其冻结。损坏可能存在于原始图像文件中,也可能是在 PDF 创建过程中引入的。

过于复杂的矢量图形是第二个最常见的原因。导出为 PDF 的 CAD 绘图(每层、每条线、每个尺寸注释都完好无损)可以生成包含数十万个单独矢量对象的页面。查看器的渲染引擎对单个页面可以处理的对象数量有限制,超过这些限制会导致崩溃。导出的同一 CAD 文件经过简化的图层和删除不必要的细节后渲染不会出现问题。

带有损坏字形数据的嵌入字体会导致出现这些特定字形的页面崩溃。如果字体的 90% 字符正确呈现,但字母 Q 的数据中存在损坏的字节,则仅在包含字母 Q 的页面上查看器才会崩溃。即使根本原因是字体损坏,崩溃也会出现特定于页面的情况。单个页面上损坏的 JavaScript 或表单字段脚本也会在页面加载和脚本执行时冻结查看器。

WukongPDF

尝试修复 PDF

无需安装。直接在您的浏览器中工作。

立即开始 →

隔离页面上的违规元素

在不同的查看器中打开 PDF。如果第 41 页使 Adobe Acrobat 崩溃,但在基于浏览器的查看器中呈现良好,则问题在于 Acrobat 如何处理特定元素,而不在于页面内容本身。如果第 41 页使每个查看者都崩溃,则问题出在页面内容上。跨查看器测试可区分查看器错误和文件损坏,并节省寻求错误修复的时间。

在 Adobe Acrobat 中,使用内容面板或编辑 PDF 工具查看页面上的各个元素。一次删除一个对象,每次删除后都会呈现页面。当崩溃停止时,最后删除的对象就是问题所在。这种二分搜索方法删除一半的对象并进行测试,可以在几分钟内将包含数百个对象的页面缩小到有问题的元素。对于基于浏览器的工具,请使用检查元素或控制台查看错误消息,以识别哪些资源加载失败。

修复页面而不丢失内容

将问题页面提取为高分辨率图像并将其重新插入到 PDF 中。这会将所有页面内容、矢量图形、文本、图像、字体转换为单个光栅图像,该图像不再包含导致崩溃的损坏元素。该页面在正常缩放时看起来相同,但失去了可搜索的文本和可编辑性。文档的其余部分保持不变。

当页面内容至关重要且必须保持可编辑状态时,请将页面提取为单独的 PDF,并通过 PDF 优化器运行该优化器来分析并删除有问题的元素。 Acrobat 的印前检查工具具有用于删除损坏内容的修复配置文件或类似的配置文件,可以去除特定类型的有问题的元素,同时保留其余元素。优化器方法比图像转换慢,但保留了更多原始页面的功能。

坠机原因诊断线索修复
嵌入图像损坏图像加载到屏幕上时发生崩溃用干净版本替换图像,或光栅化页面
向量过于复杂观看器在崩溃前逐渐变慢简化矢量数据、展平图层、减少对象数量
损坏的字体字形仅在包含特定字符的页面上崩溃替换或重新嵌入损坏的字体
交叉引用表损坏查看器在崩溃前报告结构错误另存为优化 PDF 以重建文件结构
JavaScript 或表单脚本格式错误页面加载时立即发生崩溃从页面中删除脚本,如果需要重新添加

批量检查文档是否存在页面级损坏

管理文档库时,隐藏在数千个文件中的一个文件中的单个损坏页面可能不会被发现,直到有人在截止日期前需要该特定文件。自动批量检查工具可以打开目录中的每个 PDF、渲染每个页面并标记渲染失败的文件。批量检查会在夜间或低使用时段运行,并生成问题文件和失败的特定页面的报告。

每季度对关键文档存储库进行一次批量检查,可以在紧急需要文档之前发现损坏情况。六个月前由于存储错误而损坏的页面仍然可以通过提取和光栅化来修复。两年后发现的相同损坏可能无法恢复,因为用于创建 PDF 的源数据不再可用。早期检测保留了后期发现消除的修复选项。

防止崩溃在未来版本中再次发生

修复崩溃后,首先调查导致问题页面的原因。如果 PDF 是从导致损坏的特定应用程序导出的,请更新该应用程序或更改其导出设置。如果 PDF 是通过合并多个源文件创建的,则损坏可能发生在其中一个源文件中。在假设合并过程引入问题之前,检查每个源文件的各个页面是否存在相同的崩溃模式。

对于定期更新的 PDF,请创建飞行前检查,以在分发之前验证每个页面是否正确呈现。每次更新后以缩略图视图打开每个页面。如果发生崩溃,您就知道崩溃是在最新更改中引入的,而不是在多个修订中累积的。越早发现渲染错误,需要回滚以查找根本原因的更改就越少。

何时从头开始重建 PDF

具有多个崩溃页面的 PDF,或者无法抵抗上述所有修复方法的崩溃,重建通常比继续调试更快。从源应用程序导出新的 PDF。如果源应用程序不可用,请使用与创建原始文件不同的 PDF 打印机驱动程序将文档打印为新的 PDF。不同的打印机驱动程序以不同的方式处理复杂的内容,并且造成损坏的驱动程序不太可能对相同的内容再次执行此操作,但切换驱动程序可以消除该变量。

接受某些 PDF 已达到累积损坏的状态,修复不再具有成本效益。对可以在 30 分钟内从源材料重新创建的文档进行第四次尝试修复所花费的时间是浪费时间。认识到收益递减点并从修复模式切换到重建模式。重建的 PDF 将比损坏的原始 PDF 的任何修复版本更干净、更小且更可靠。

WukongPDF

尝试修复 PDF

无需安装。直接在您的浏览器中工作。

立即开始 →