objective-c - 带CoreText的多页PDF

标签 objective-c ios core-graphics core-text

我正在使用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/

相关文章:

objective-c - Xcode 4 中的 NSPredicateEditor

iphone - -捆绑标识符中的 -temp-caseinsensitive-rename

ios - 多个 AVPlayer 实例同时暂停会导致短暂但烦人的卡住

ios - 从 iOS 中的部分图像创建 mask

objective-c - iOS CoreGraphics : Draw arc, 根据相交弦定理确定弧角

objective-c - 具有运行到完成语义的 KVO - 这可能吗?

iphone - TableViewSuite App 需要什么样的项目类型

objective-c - 我的应用调用 scrollViewDidScroll 19 次

ios - iOS Audio如何制作颤音或颤音效果

ios - 遍历 UnsafeMutableRawPointer 图像数据