要在 Mac 上查找与 Affinity PDF 导出失败相关的页面,请使用相同设置导出较小的页面范围,然后逐步缩小失败范围。单独导出可疑页面,并导出不包含该页面的其余页面,以确认结果。

本指南适用于当前 Affinity 桌面应用中的多页、按页面排列的文档。目标是在更改文档内容之前,找到可重现的故障。下面的范围测试步骤是一种根据 Affinity 已记录的导出控件整理出的诊断方法,并非内置的自动故障查找功能。

Affinity 能自动识别什么?

Affinity 的预检面板可以定位其当前检查配置文件涵盖的问题。在面板中,点击 立即检查,将指针悬停在条目上查看详情,然后双击条目即可跳转到相应位置。只有部分问题类型提供 修复 按钮。这些是直接找到已报告问题的有据可查的方法。Affinity 的预检文档

反复导出之前,请先检查预检。其已记录的检查项目包括缺失字体、缺失或过期的链接资源,以及缺失或损坏的置入 PDF。不过,提示置入的 PDF 将被栅格化的条目描述的是导出时的处理方式;单凭这一点,不能确定导出失败的原因。预检检查与 PDF 直通消息

官方的导出对话框和预检文档没有介绍一种能够可靠指出所有 PDF 导出错误中故障页面的命令。因此,即使预检没有明确结果,仍需回答一个问题:哪些请求的输出(如果有)会重现故障?通过受控的页面范围导出可以帮助回答这个问题。导出对话框、预检

缩小范围前,先确保导出结果可重复

保存文档,并在更改内容之前另存一份工作副本。首次测试时,保持版面不变。删除页面会改变你要诊断的文档。

记录失败导出所用的 PDF 预设和任何自定义设置。在所有范围测试中,保持这些设置、目标文件夹和文档内容不变。每次尝试都使用不同的文件名,例如 test-01-16.pdf,避免把之前成功的文件误认为最新结果。

对于按页面排列的文档,Affinity 说明 所有页面 会导出各个页面,包括对页布局中的左右页。所有跨页 会将每个跨页导出为一个 PDF 页面。这两种输出的边界不同,因此请记录原先失败的是哪一种。Affinity 的区域导出设置

按以下设置调查单个页面:

  1. 选择 文件 > 导出 > 导出。
  2. 选择失败尝试所用的 PDF 预设,并保留自定义设置。
  3. 将 区域 设为 所有页面。
  4. 在 页面 中输入所需范围。
  5. 选择 询问保存位置,点击 导出,为测试文件命名,然后点击 保存。

Affinity 文档支持类似 4-17 的范围、类似 4,5,6 的单个页码,以及类似 4-5,19,27,39 的组合。选择 所有页面 或 所有跨页 后,页面 字段才可用。导出对话框说明

首先使用 所有页面 导出整个文档,确认能否重现故障。如果成功,但原先使用 所有跨页 的导出失败,请继续查看下方针对跨页的步骤。更改输出边界后导出成功,可作为有用的对照,但尚未能确定故障页面。

每次测试成功后,打开生成的 PDF,检查内容和页数是否符合预期。这也有助于确认你对页面范围输入的理解。如果页码对应关系不明确,可使用 当前页面 导出活动页面,并与可识别的页面进行比较。当前页面导出行为

通过测试两半范围缩小故障位置

确认整个文档的故障可以稳定重现后,将页面范围大致平分为两段,分别导出。继续拆分任何失败的范围,直到最小的可重现失败范围只包含一个页面。

两半都要测试。第一半成功并不能证明第二半失败;一半失败也不能证明另一半没有问题。记录两半的结果,在涉及多个页面时,这种方法才有用。

示例:一个虚构的 32 页文档

假设一个包含中性文本和简单几何图形的 32 页文档无法导出。以下结果仅用于说明,并非 Affinity 测试的实际观察结果。

轮次 分别导出的范围 示例结果 下一步操作
1 1-16 和 17-32 第一段成功;第二段失败 拆分 17-32
2 17-24 和 25-32 第一段失败;第二段成功 拆分 17-24
3 17-20 和 21-24 第一段成功;第二段失败 拆分 21-24
4 21-22 和 23-24 第一段成功;第二段失败 分别测试第 23 页和第 24 页
5 23 和 24 第 23 页失败;第 24 页成功 确认第 23 页及其余页面

在此示例中,经过五轮,32 个候选页面缩小到一个。测试两半共需尝试导出十次,然后再进行确认。此计算假设故障始终一致且只发生在某个页面;实际文档可能需要测试更多分支,也可能无法隔离到单页。

简要记录每次测试的范围、文件名、设置和结果。对于成功的导出,记下你已检查 PDF。对于失败,记录具体情况:错误消息、应用程序退出,或导出未能完成。如果是否完成并不确定,请将结果标记为无法判断,而不是当作已确认的失败。

确认可疑页面是否确实与故障相关

找到单独导出时会失败的页面后,使用不变的设置重新导出该页面。然后导出不包含该页面的其余文档。在虚构示例中,输入 1-22,24-32 即可测试除第 23 页以外的所有页面;Affinity 支持混合范围和单个页码。支持的页面输入格式

最有力的实用结果是可重复的三部分模式:整个文档导出失败,可疑页面单独导出也失败,其余页面则能成功导出。这支持你在记录的设置下,将该页面描述为与故障相关。但这并不能确定究竟是哪个对象、字体、置入文件或导出操作导致问题。

如果其余页面仍然导出失败,请继续拆分该范围。你可能会找到另一个故障页面,也可能发现原先单页故障的解释并不完整。除非排除可疑页面后剩余输出能够成功,否则不要仅凭第一个可疑页面就结束排查。

如果范围测试无法将故障缩小到单个页面,该怎么办?

此方法依赖故障在请求导出的页面集合变化时仍能重现。根据下表结果,判断是否继续缩小范围。

观察到的结果 能确定什么 下一步有用的测试
一半失败,另一半成功 请求较小范围仍能重现故障 拆分失败的一半
两半都失败 多个范围都能重现故障 分别调查两条分支
两半都成功,但合并后的范围失败 尚未将故障缩小到单个页面 使用不变的设置重新测试合并后的范围
每页单独导出都成功,但完整导出失败 尚未证明有任何单页会单独导致失败 找出能稳定重现故障的最小组合
相同测试有时成功、有时失败 结果不够稳定,无法可靠缩小范围 重复基准测试并记录差异

这些是诊断结果的解读,并非 Affinity 已记录的错误分类。例如,两半分别成功,并不能证明每个页面在所有组合中都没有问题。这只能说明这两次单独的导出请求已完成。

如果没有单页会单独失败,请保留能重现问题的最小组合。像“第 17–24 页一起导出失败,而第 17–20 页和第 21–24 页分别导出成功”这样的准确结果,比指认一个缺乏依据的罪魁祸首更有用。

如果原始故障仅在跨页导出时发生

在缩小请求范围时,保留 所有跨页 设置,并检查成功的输出,确认其中包含哪些跨页。Affinity 文档说明,每个跨页会成为一个 PDF 页面;此模式下仍可使用“页面”字段。跨页输出设置、范围选择

确定可疑跨页后,使用 当前跨页 进行比较,然后通过 当前页面 分别测试其中的页面。如果跨页导出失败,而两个单独页面都能成功,请报告这是与跨页相关的故障。这些结果不足以断定其中任一页面有问题。

找到页面后该怎么做

返回预检并查看可疑位置。一个有据可查的具体 PDF 限制是:虚线图案最多只能包含 12 个条目;对于更复杂的图案,预检可能会报告描边问题。如果确实存在这一特定问题,请在工作副本中修正并重复相同的导出。不要仅仅因为文档中有虚线图形,就假定它导致了故障。有据可查的预检限制

进一步排查时,在工作副本中每次只更改一个可疑项目,然后重复单页测试。测试内容改动时,保持原导出设置不变。否则,即使某次尝试成功,你也无法判断是哪项更改起了作用。

如果要有意比较栅格化设置,请将其作为单独的实验。Affinity 说明,全部 会栅格化所有设计元素,不支持的属性 会栅格化不受支持的元素,而 无 会省略不受支持的元素,而不是将其栅格化。因此,选择 无 可能会导致输出中缺少内容。使用更改后的设置完成导出后,仍需目视检查;这并不能证明原先的故障已修复。栅格化导出设置

最后,使用预期的页面或跨页模式及最终设置重新导出整个文档,然后检查 PDF。在这次导出成功之前,保留失败范围的记录。最终应得到一个已确认的待调查页面,或一组精确且可重现的失败范围,以说明为何无法将问题归因于单个页面。

来源