修改 PDF 时图像被覆盖 iOS

Images are overwritten when modifying a PDF iOS

我有一个允许用户在 PDF 上绘图的应用程序。用户的绘图被保存为图像,然后添加到现有的 PDF 中。我遇到的问题是用户已经绘制了 2 张图像。出于某种原因,保存第三张图像会导致第二张图像被第一张图像覆盖。下面是一个例子。

PDF 示例:

上面的PDF应该是第一,第二,第三;但是,第二张图片被第一张覆盖了。

下面是我将图像嵌入 PDF 的代码。请注意,我也使用 PDFKit 尝试过此操作并遇到了相同的结果:

func saveImageToPDF(path: String , drawnImage: UIImage, x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat, pageIndex: Int) {
    if  let pdf = CGPDFDocument(NSURL(fileURLWithPath: path)) {
        let pageCount = pdf.numberOfPages
        
        // Write to file
        UIGraphicsBeginPDFContextToFile(path, CGRect.zero, nil)
        for index in 1...pageCount {
            let page =  pdf.page(at: index)
            let pageFrame = page?.getBoxRect(.mediaBox)
            
            if (pageFrame != nil) {
                UIGraphicsBeginPDFPageWithInfo(pageFrame!, nil)
                
                let pdfContext = UIGraphicsGetCurrentContext()
                
                // Draw existing page
                pdfContext?.saveGState()
                
                pdfContext?.scaleBy(x: 1, y: -1)
                pdfContext?.translateBy(x: 0, y: -pageFrame!.size.height)
                pdfContext?.drawPDFPage(page!)
                pdfContext?.restoreGState()
                
                // Draw image on top of page
                if (index == (pageIndex + 1)) {
                    drawnImage.draw(in: CGRect(x: x, y: y, width: width, height: height))
                }
            }
        }
        UIGraphicsEndPDFContext()
    }
}

注意:我似乎只在 iOS 15 上遇到过这个问题。运行 iOS 14 上的相同代码就像魅力.

我应该认为这是 iOS 15 上的错误,还是我遗漏了什么?

提前致谢!

联系 Apple 的技术支持后。他们得出结论,这是 iOS 15.

的问题

这是一个完全复制问题的示例项目:https://github.com/Manguelo/test-pdf-issue

请注意,应用程序应 运行 iOS 15.0

根据 PDFKit 团队的说法,此错误应在 iOS 15.2 beta 3 中解决。