CoreText多页PDF

我使用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来获取整个框架的大小。

链接地址: http://www.djcxy.com/p/81985.html

上一篇: Multi page PDF with CoreText

下一篇: CoreText drawing, receiving touches, touch coordinates messed up