修改 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 中解决。
我有一个允许用户在 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 中解决。