0

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

PDF 示例:

在此处输入图像描述

上面的PDF应该是First、Second、Third;但是,第二张图像被第一张覆盖了。

下面是我将图像嵌入 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 上的错误,还是我遗漏了什么?

提前致谢!

4

1 回答 1

0

联系 Apple 的技术支持后。他们认为这是 iOS 15 的问题。

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

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

根据 PDFKit 团队的说法,这个错误应该在 iOS 15.2 beta 3 中得到解决。

于 2021-11-17T20:14:58.673 回答