首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tm操作员如何使用CGPDF传递PDF文档中的数据?

Tm操作员如何使用CGPDF传递PDF文档中的数据?
EN

Stack Overflow用户
提问于 2013-08-06 03:25:10
回答 1查看 379关注 0票数 1

根据"Pdf参考版本1.7“,文字定位操作员"Tm”的描述如下:

...Although操作数指定一个矩阵,它们作为六个单独的数字传递给Tm,而不是作为一个数组。

我不明白如何检索一系列不是数组、字符串或任何类似的数字。当我实现这段代码时,我会得到对象类型是真实的,当我试图得到它的值时,我最后得到的是数组的最后一个数字。

代码语言:javascript
复制
CGPDFOperatorTableSetCallback(table, "Tm", positioningOperator);

...

void positioningOperator(CGPDFScannerRef scanner, void *info)
{
    [(__bridge CTPDFParser *)info operatorPositionScanned:scanner];
}

...

- (void)operatorPositionScanned:(CGPDFScannerRef)scanner
{
    CGPDFContentStreamRef streamRef = CGPDFScannerGetContentStream(scanner);

    CGPDFObjectRef object;
    CGPDFScannerPopObject(scanner, &object);

    CGPDFObjectType type = CGPDFObjectGetType(object);

    if( type == kCGPDFObjectTypeReal)
    {
        CGPDFReal real;
        if( CGPDFObjectGetValue(object, type, &real) )
        {
            // 1 0 0 1 256.3246 669.3472 Tm
            NSLog(@"%f", real); // Prints only 669.347168
        }
    }
}

我检查了传递的值是否是其他类型的,但它只是真实的,所以我真的不知道如何检索其他数字。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-06 05:27:27

每个PDF操作符在堆栈上都有它的操作数。对于您处理的每个操作符,您必须从堆栈中弹出所需的操作数数,如PDF规范所述。

对于Tm操作符,必须从堆栈中弹出6个操作数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18071350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档