PDF Аннотации на iOS с кварцем - PullRequest
2 голосов
/ 01 марта 2011

Хм, потратил пару дней, пытаясь получить аннотации PDF в моем приложении для iPad.Я использую следующий код, чтобы получить аннотации, и да!это работает :) Но значение rect полностью отличается от значений прямоугольника IOS.Я не могу понять, как разместить кнопки UIB на месте, где должна быть аннотация.Например, у меня есть аннотация в верхнем левом углу файла PDF.

Значения My / Annots / Rect: 1208,93, 2266,28, 1232,93, 2290,28 (ЧТО ?!)

Какможно ли перевести значения PDF / Annots / Rect в координаты iOS x и y?

CGPDFPageRef page = CGPDFDocumentGetPage(doc, i+1);

CGPDFDictionaryRef pageDictionary = CGPDFPageGetDictionary(page);

CGPDFArrayRef outputArray;
if(!CGPDFDictionaryGetArray(pageDictionary, "Annots", &outputArray)) {
    return;
.... .... ....}

Ответы [ 2 ]

1 голос
/ 01 марта 2011

Я думаю, что эти координаты находятся в «пользовательском координатном пространстве по умолчанию» в PDF. Вам необходимо применить преобразование, которое отправляет их в экранные координаты. Вы можете использовать CGPDFPageGetDrawingTransform, чтобы получить такое преобразование. Убедитесь, что вы используете одно и то же преобразование для рисования страницы и аннотаций.

0 голосов
/ 18 июня 2012

Я не уверен, что это проблема, но кварцевые 2D системы координат начинаются внизу слева.

Подробнее см. В Руководстве по программированию Quartz 2D Системы координат .

Ps. Если у вас все получилось, я хотел бы увидеть код результата для аннотирования.

EDIT:

Только что нашел этот код (не тестировался):

// flip context so page is right way up
CGContextTranslateCTM(currentContext, 0, paperSize.size.height);
CGContextScaleCTM(currentContext, 1.0, -1.0); 

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...