我想使用PDFKit将高亮度注释添加到pdf文件中。我使用下面的代码添加它。
PDFPage* page = [self.pdfView.document pageAtIndex:0];
PDFAnnotation* annotation = [[PDFAnnotation alloc] initWithBounds:CGRectMake(206, 600, 60, 59) forType:PDFAnnotationSubtypeHighlight withProperties:nil];
annotation.color = UIColor.blueColor;
[page addAnnotation:annotation];
但它只是突出显示一个矩形,我想突出显示多行文字。我找到了一个问题/答案Wrong highlight annotation on apple PDFKit
但它不是我想要的,它会添加许多高亮注释,我只想添加一个注释。我了解到键值QuadPoints可以做到这一点。但是当我添加下面的代码时,它不起作用,甚至无法渲染注释。
NSArray<NSValue *> *quadrilateralPoints = [[NSArray alloc] initWithObjects:
[NSValue valueWithCGPoint:CGPointMake(206.0f, 659.0f)],
[NSValue valueWithCGPoint:CGPointMake(266.0f, 659.0f)],
[NSValue valueWithCGPoint:CGPointMake(206.0f, 600.0f)],
[NSValue valueWithCGPoint:CGPointMake(266.0f, 600.0f)],
nil];
annotation.quadrilateralPoints = quadrilateralPoints;
所以现在我想知道如何实现它?或者如何使用quadrilateralPoints?
答案 0 :(得分:1)
我找到了答案: 下面的代码工作
NSArray<NSValue *> *quadrilateralPoints = [[NSArray alloc] initWithObjects:
[NSValue valueWithCGPoint:CGPointMake(206.0 - 206, 659.0 - 600)],
[NSValue valueWithCGPoint:CGPointMake(266.0 - 206, 659.0 - 600)],
[NSValue valueWithCGPoint:CGPointMake(206.0 - 206, 600.0 - 600)],
[NSValue valueWithCGPoint:CGPointMake(266.0 - 206, 600.0 - 600)],
nil];
annotation.quadrilateralPoints = quadrilateralPoints;
因为它基于原点界限
答案 1 :(得分:0)
我发现一种更好的方法是使用.quadPoints注解键。此方法与PDF规范匹配,并且不属于PDFAnnotationUtilities.h文件的一部分,该文件是为了兼容旧版功能而提供的。这种方式不需要您调整边界。
let quadPoints:[CGPoint] = [CGPoint(x:206.0, y:659.0),
CGPoint(x:266.0, y:659.0),
CGPoint(x:206.0, y:600.0),
CGPoint(x:266.0, y:600.0)]
annotation.setValue(quadPoints, forAnnotationKey: .quadPoints)
要完成答案,您还应该使用PDFSelection的selectionsByLine函数来获取特定页面上的所有选择,并按照Wrong highlight annotation on apple PDFKit
中的说明在每页上做一个注释。