iOS11 如何在 PDFKit 中添加图像注释
how to add image annotation in PDFKit in iOS11
我在 iOS11 中使用 PDFKit 开发一个可以显示 pdf 文件添加注释的应用程序。现在我想给pdf页面添加图片注释,我觉得注释子类型应该是stamp。但是在PDFKit中我找不到像“image
”这样的属性来设置,唯一与图章注释相关的属性是stampName
。有人可以帮忙吗?
以下是我如何做到的。
这个想法是覆盖 draw() 函数来执行现在不存在的 PDFAnnotationStamp class 的出价(我发现了一些关于不同类型的 PDFAnnotation subclasses that are now gone 的过时文档)。
这个问题doesn't seem to be recent,而且开发板真的是空iOS边,差点吓人
public class ImageAnnotation: PDFAnnotation {
private var _image: UIImage?
public init(imageBounds: CGRect, image: UIImage?) {
self._image = image
super.init(bounds: imageBounds, forType: .stamp, withProperties: nil)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override public func draw(with box: PDFDisplayBox, in context: CGContext) {
guard let cgImage = self._image?.cgImage else {
return
}
let drawingBox = self.page?.bounds(for: box)
//Virtually changing reference frame since the context is agnostic of them. Necessary hack.
context.draw(cgImage, in: self.bounds.applying(CGAffineTransform(
translationX: (drawingBox?.origin.x)! * -1.0,
y: (drawingBox?.origin.y)! * -1.0)))
}
}
我在 iOS11 中使用 PDFKit 开发一个可以显示 pdf 文件添加注释的应用程序。现在我想给pdf页面添加图片注释,我觉得注释子类型应该是stamp。但是在PDFKit中我找不到像“image
”这样的属性来设置,唯一与图章注释相关的属性是stampName
。有人可以帮忙吗?
以下是我如何做到的。 这个想法是覆盖 draw() 函数来执行现在不存在的 PDFAnnotationStamp class 的出价(我发现了一些关于不同类型的 PDFAnnotation subclasses that are now gone 的过时文档)。 这个问题doesn't seem to be recent,而且开发板真的是空iOS边,差点吓人
public class ImageAnnotation: PDFAnnotation {
private var _image: UIImage?
public init(imageBounds: CGRect, image: UIImage?) {
self._image = image
super.init(bounds: imageBounds, forType: .stamp, withProperties: nil)
}
required public init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override public func draw(with box: PDFDisplayBox, in context: CGContext) {
guard let cgImage = self._image?.cgImage else {
return
}
let drawingBox = self.page?.bounds(for: box)
//Virtually changing reference frame since the context is agnostic of them. Necessary hack.
context.draw(cgImage, in: self.bounds.applying(CGAffineTransform(
translationX: (drawingBox?.origin.x)! * -1.0,
y: (drawingBox?.origin.y)! * -1.0)))
}
}