Cocoa PDF Получение значения поворота страницы

Первый раз задаю вопрос на этом форуме. Извините, если мой английский неправильный, это не мой родной язык. Обычно я всегда нахожу ответы на этом форуме или в гугле. Но в этот раз не нашел.

Вот мой вопрос (Mac OS X Lion):

У меня есть несколько PDF-файлов. Для тестирования я поворачиваю некоторые страницы с помощью «Предварительного просмотра» и/или программно поворачиваю некоторые страницы PDF с помощью PDFKit ([PDFPage setRotation:90]). Я сохраняю этот новый PDF. Результатом является PDF с некоторыми повернутыми страницами. Я снова открываю в Preview или другом, чтобы убедиться, что все в порядке. Это нормально, дисплей правильный. Все идет нормально.

Теперь я открываю этот новый созданный PDF-файл и пытаюсь получить значения поворота страниц PDF (страница за страницей). Я пробовал использовать методы PDFKIT [поворот PDFPage] или методы Quartz с CGPDF... (CGPDFPageGetRotationAngle), я всегда получаю значение 0 для поворота страницы. NSLog(@"значение:%d", угол)

Как воспроизвести с помощью методов PDFKIT, просто используйте код «Редактор аннотаций PDF» от Apple. Откройте PDF-файл с какой-либо страницей в альбомной и портретной ориентации. Дисплей будет таким, как ожидалось. Но теперь пытаюсь прочитать значение поворота в строке «поворот = [поворот страницы];» в методе transformContextForPage:(PDFPage*)page я всегда получаю 0. Когда ожидаемые значения должны быть 0 или 90 в зависимости от страницы. Та же проблема при попытке использовать метод Quartz с CGPDFPageGetRotationAngle.

Я что-то упускаю ? Это ошибка? или мое понимание вращения страницы PDF неверно?

Спасибо


person Fabrice Leyne    schedule 26.01.2012    source источник


Ответы (1)


В PDF вы можете создавать повернутые страницы двумя способами: установить размер страницы 8,5*11 дюймов и установить для атрибута «Поворот страницы» значение 90 или просто установить размер страницы 11*8,5 дюймов. Визуально разницы нет.
Проблема с предварительным просмотром (и я предполагаю, что за ним стоит PDFKit) заключается в том, что когда вы устанавливаете поворот на 90, он не просто устанавливает атрибут поворота на 90, но переключает ширину и высоту страницы и применяет преобразование. в потоке содержимого страницы, чтобы содержимое страницы отображалось повернутым. Поскольку [вращение PDFPage] и CGPDFPageGetRotationAngle возвращают значение атрибута Rotate, они всегда будут возвращать 0 на страницах, повернутых с помощью Preview и PDFKit.

person iPDFdev    schedule 26.01.2012
comment
Вот так. После тестирования вращения с продуктом, отличным от Mac, значение вращения в PDF теперь правильное. Это очень странно, в данном случае документ PDFPage из PDFKit вводит в заблуждение. Поскольку он не устанавливает вращение, как указано, а только, как вы сказали, примените преобразование. Спасибо - person Fabrice Leyne; 26.01.2012
comment
Кажется, на Эль-Капитане это изменилось, и PDFKit теперь устанавливает только атрибут поворота... - person FRotthowe; 12.09.2015