我正在使用CoreText来生成一个包含一系列NSAttributedString
的PDF文档,因此我创建了一个CTFrameSetterRef
并为其提供了覆盖整个页面的框架,然后循环使用CTFrameDraw
绘制文本以检查CTFrameGetVisibleStringRange
的结果以检测何时开始一个新页面。这很好用,但是我怎么知道文本的结尾呢?例如,文本可能会在最后一页的中途停止,我想在下面绘制一些图像。如何获得文本的结尾位置?
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)notesAttrString);
do {
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, currentRange, path, NULL);
if( frame ) {
CTFrameDraw(frame, context);
if( currentRange.location < CFAttributedStringGetLength((CFAttributedStringRef)notesAttrString) ) {
UIGraphicsBeginPDFPage();
} else {
complete = YES;
}
}
} while( !complete );
(上面的代码已被缩减以说明该过程,但未完成)
最佳答案
您可以使用CTFrameGetLineOrigins
并检查最后一行的原点,也可以使用CTFramesetterSuggestFrameSizeWithConstraints
获取整个帧的大小。
关于objective-c - 带CoreText的多页PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11543048/