Согласно «Pdf Reference Version 1.7» оператор текста позиционирование «Tm» описывается следующим образом:Как оператор Tm передает данные в документе PDF с использованием CGPDF?
... Хотя операнды определить матрицу, они передаются Tm как шесть отдельных номеров, а не как массив.
Я не понимаю, как я должен получать серию чисел, которые не являются массивом, строкой или чем-то подобным. Когда я реализую этот код, я получаю, что тип объекта является реальным, и когда я пытаюсь получить его значение, все, что у меня получается, это последний номер массива.
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
}
}
}
Я проверил, если переданное значение было любого другого типа, но это было только реальным, так что я действительно не знаю, как получить другие числа.
Любая помощь будет оценена по достоинству.
Вы пробовали вытаскивать из сканера более одного объекта? Должно быть шесть номеров для поп-музыки. – mkl
Спасибо! Это то, что я искал –