2012-01-26 3 views
2

Это первый раз, когда я задаю вопрос на этом форуме. Извините, если мой английский не прав, это не мой родной язык. Обычно я всегда нахожу ответы на этом форуме или в Google. Но на этот раз я не нашел.Cocoa PDF Getting Page Rotation value issue

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

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

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

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

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

Благодаря

ответ

1

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

+0

Правильно. После тестирования для поворота с помощью продукта, отличного от Mac, значение поворота в PDF теперь правильно. Это очень странно, документ PDFPage PDFKit вводит в заблуждение в этом случае. Поскольку он не устанавливает вращение, как упоминалось, но только, как вы сказали, примените преобразование. Спасибо –

+0

Кажется, что на El Capitan это изменилось, и теперь PDFKit задает атрибут вращения ... – FRotthowe