Какао PDF Получение страницы Проблема с вращением - PullRequest
2 голосов
/ 26 января 2012

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

Вот мой вопрос (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 Annotation Editor» от Apple. Откройте PDF с какой-нибудь страницей в альбомной и портретной ориентации. Дисплей будет таким, как ожидалось. Но теперь пытаюсь прочитать значение вращения в строке 'вращение = [поворот страницы];' в методе страницы transformContextForPage: (PDFPage *) я всегда получаю 0. Когда ожидаемые значения должны быть 0 или 90 в зависимости от страницы. Та же проблема при попытке использовать Кварцевый метод с CGPDFPageGetRotationAngle.

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

Спасибо

1 Ответ

1 голос
/ 26 января 2012

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

...