如何防止 PDFKit/NSImage 中的渲染瑕疵?

How to prevent rendering artifacts in PDFKit/NSImage?

我正在尝试创建一个工具来在 macOS 上光栅化矢量图像(存储在 PDF 文件中),但生成的图像在某些形状的边缘周围包含伪影。另一方面,Preview.app 始终完美呈现 PDF,如本例所示:

我试过:

在这两种情况下,我都会得到这些类似混叠的伪像,如上图左侧所示。 PDF 文件不受我控制,因此无法更改以修复它可能存在的任何问题。出于性能原因,我目前正在尝试从开罗(正确呈现)迁移到 Apple 的 PDF 呈现(PDFKit 呈现它更快,尽管有这些工件)。

有什么我遗漏的可以修复输出的吗?

看来这个问题是由于我在多个线程上光栅化 PDF 引起的(特别是我的工具以多种分辨率光栅化 PDF,所以我想为什么不同时进行)。

在主线程上按顺序执行操作而不是修复它。我以为我想出了一种通过手动初始化 CGContext 来同时使用它的方法(而不是使用 NSImagelockFocus()/unlockFocus()NSGraphicsContext.current), 但是,唉,当我添加 context.scaleBy (以生成不同大小的图像)时,它再次失败。

所以现在我只是在主线程上做,直到出现另一个解决方案。