Перейти к содержимому

Quartz pdfcontext что это

  • автор:

Создание документа в формате PDF, просмотр и преобразование

Документы в формате PDF хранят независимую от разрешения векторную графику, текст и изображения как ряд команд, записанных в компактном языке программирования. Документ в формате PDF может содержать многократные страницы изображений и текста. PDF полезен для создания межплатформенных, документов только для чтения и для рисования независимой от разрешения графики.

Кварц создает для всех приложений, высокочастотных документов в формате PDF, сохраняющих операции рисования приложения, как показано на рисунке 13-1 . Получающийся PDF может быть оптимизирован для определенного использования (такого как определенный принтер, или для сети) другими частями системы, или сторонними продуктами. Документы в формате PDF, сгенерированные представлением Quartz правильно в Предварительном просмотре и Acrobat.

Кварц не только использует PDF в качестве своей “цифровой статьи”, но также и включает как часть его API много функций, которые можно использовать, чтобы вывести на экран и генерировать файлы PDF и выполнить много других СВЯЗАННЫХ С PDF задач.

Для получения дальнейшей информации о PDF, включая язык PDF и синтаксис, посмотрите Ссылку PDF, Четвертый Выпуск, Версию 1.5.

Открытие и просмотр PDF

Кварц обеспечивает тип данных CGPDFDocumentRef представлять документ в формате PDF. Вы создаете объект CGPDFDocument, использующий любого функция CGPDFDocumentCreateWithProvider или функция CGPDFDocumentCreateWithURL . После создания объекта CGPDFDocument можно нарисовать его к графическому контексту. Рисунок 13-2 показывает документ в формате PDF, выведенный на экран в окне.

Перечисление 13-1 показывает, как создать CGPDFDocument, возражают и получают число страниц в документе. Подробное объяснение каждой пронумерованной строки кода появляется после перечисления.

Перечисление 13-1 , Создающее CGPDFDocument, возражает от файла PDF

CGPDFDocumentRef MyGetPDFDocumentRef (const char *filename)
CFStringRef path;
CFURLRef url;
CGPDFDocumentRef document;
size_t count;
path = CFStringCreateWithCString (NULL, filename,
kCFStringEncodingUTF8);
url = CFURLCreateWithFileSystemPath (NULL, path, // 1
kCFURLPOSIXPathStyle, 0);
CFRelease (path);
document = CGPDFDocumentCreateWithURL (url);// 2
CFRelease(url);
count = CGPDFDocumentGetNumberOfPages (document);// 3
if (count == 0)
printf("`%s' needs at least one page!", filename);
return NULL;
return document;

Вот то, что делает код:

  1. Вызывает Базовую функцию Основы для создания объекта CFURL из объекта CFString, представляющего имя файла файла PDF для отображения.
  2. Создает объект CGPDFDocument из объекта CFURL.
  3. Получает число страниц в PDF так, чтобы следующий оператор в коде мог гарантировать, что документ имеет по крайней мере одну страницу.

Вы видите, как нарисовать страницу PDF к графическому контексту путем рассмотрения кода в Перечислении 13-2 . Подробное объяснение каждой пронумерованной строки кода появляется после перечисления.

Перечисление 13-2 , Получающее страницу PDF

void MyDisplayPDFPage (CGContextRef myContext,
size_t pageNumber,
const char *filename)
CGPDFDocumentRef document;
CGPDFPageRef page;
document = MyGetPDFDocumentRef (filename);// 1
page = CGPDFDocumentGetPage (document, pageNumber);// 2
CGContextDrawPDFPage (myContext, page);// 3
CGPDFDocumentRelease (document);// 4

Вот то, что делает код:

  1. Вызывает Вашу функцию (см. Перечисление 13-1 ) для создания объекта CGPDFDocument из имени файла, Вы предоставляете.
  2. Получает страницу для указанного номера страницы из документа в формате PDF.
  3. Рисует указанную страницу из файла PDF путем вызывания функции CGContextDrawPDFPage . Необходимо предоставить графический контекст и страницу для рисования.
  4. Выпускает объект CGPDFDocument.

Создание преобразования для страницы PDF

Кварц обеспечивает функцию — CGPDFPageGetDrawingTransform — это создает аффинное преобразование путем отображения поля на странице PDF к прямоугольнику, который Вы указываете. Прототип для этой функции:

CGAffineTransform CGPDFPageGetDrawingTransform (
CGPPageRef page,
CGPDFBox box,
CGRect rect,
int rotate,
bool preserveAspectRatio

Функция возвращает аффинное преобразование с помощью того после алгоритма:

  • Пересекает прямоугольник, связанный с типом поля PDF, которое Вы указываете в box параметр (носители, обрезка, выход за край, обрезка или искусство) и /MediaBox запись указанной страницы PDF. Пересечение приводит к эффективному прямоугольнику.
  • Поворачивает эффективный прямоугольник на сумму, указанную /Rotate запись для страницы PDF.
  • Центрирует получающийся прямоугольник на прямоугольнике, который Вы предоставляете в rect параметр.
  • Если значение rotate параметр, который Вы предоставляете, является ненулевым и кратное число 90, функция поворачивает эффективный прямоугольник на число градусов, которые Вы предоставляете. Положительные значения поворачивают прямоугольник вправо; отрицательные величины поворачивают прямоугольник налево. Обратите внимание на то, что Вы дипломы без отличия, не радианы. Следует иметь в виду что /Rotate запись для страницы PDF содержит вращение также, и rotate параметр, который Вы предоставляете, объединен с /Rotate запись.
  • Масштабирует эффективный прямоугольник, при необходимости, так, чтобы он совпал с краями прямоугольника, который Вы предоставляете.
  • Если Вы указываете для сохранения форматного соотношения путем передачи true в preserveAspectRatio параметр, тогда заключительный прямоугольник совпадает с краями более строгой размерности прямоугольника, который Вы предоставляете в rect параметр.

Можно использовать эту функцию, например, если Вы пишете приложение просмотра PDF, подобное показанному на рисунке 13-3 . Если необходимо было обеспечить функцию Rotate Left/Rotate Right, Вы могли бы вызвать CGPDFPageGetDrawingTransform вычислить надлежащее преобразование для текущего размера окна и установки вращения.

Перечисление 13-3 показывает функцию, создающую аффинное преобразование для страницы PDF с помощью параметров, передал функции, применяет преобразование, и затем рисует страницу PDF. Подробное объяснение каждой пронумерованной строки кода появляется после перечисления.

Перечисление 13-3 , Создающее аффинное преобразование для страницы PDF

void MyDrawPDFPageInRect (CGContextRef context,

Изменение PDF-файлов с помощью Quartz-фильтров в Утилите ColorSync на компьютере Mac

Вы можете применять Quartz-фильтры для изменения PDF-файлов путем добавления эффектов, цветового пространства и даже уменьшения размера файла повторным сжатием графических элементов.

  1. В приложении «Утилита ColorSync» на Mac выберите меню «Файл» > «Открыть», затем выберите документ PDF.
  2. Когда файл откроется, нажмите всплывающее меню «Фильтр» внизу окна и выберите нужный вариант. Эффект от применения фильтра показан в окне, но сам файл не изменяется. Для перелистывания страниц PDF-файла и отображения эффекта от применения фильтров на каждой странице пользуйтесь стрелками на панели инструментов. Чтобы просмотреть доступные фильтры, нажмите кнопку «Фильтры» в панели инструментов.
  3. Нажмите «Применить», чтобы сохранить изменения.

Файл:Добротные_статьи_—_что_это_такое.pdf

Файл:Добротные статьи — что это такое.pdf

следующая страница →

следующая страница →

Исходный файл ‎ (1500 × 1125 пкс. Размер файла: 2,12 Мб, MIME-тип: application/pdf . 35 страниц)

Этот файл находится на Викискладе. Сведения о нём показаны ниже.

Викисклад — централизованное хранилище для свободных файлов, используемых в проектах Викимедиа.

Quartz pdfcontext что это

Если открыть PDF и нажать Command-I (если вы открыли его в Preview) или Command-D (если вы зачем-то открыли его в Acrobat), можно узнать в какой программе сотворен документ и каким образом он стал PDF файлом.
В Preview это выглядит так:

PDF-продюсер Mac OS X 10.1.5 Quartz PDFContext

Создано в программе CanoScan N1240U
PDF-продюсер Adobe Acrobat 6.0 Paper Capture

Создано в программе QuarkXPressª 4.11: LaserWriter 8 8.7.1
PDF-продюсер Acrobat Distiller 4.0.5 for Macintosh

Ай-Да-Фон 6

Поскольку остался без игрушечки, можно поутешаться рассматриванием ее системы на Маке.

Хотя бы, для того, чтобы убедиться так ли ужасны мелодии звонка –
/Volumes/Heavenly1A543a.UserBundle/Library/Ringtones/
(да, ужасны – джентльменский набор для Startup Items на Performa 630).

Application %@ got sufficiently warned but is still alive, killing it.
Sleeping for %d seconds before I reboot
Could not create registration context. Weird.
Forty Two
ProxyDeath
Setting the activation state to MismatchedIMEI. Dude, where’s your baseband?
Setting the activation state to MismatchedICCID. Put that other SIM back in.
Setting the activation state to MissingSIM. Put that SIM back in, dude.
Setting the activation state to FactoryActivated. Helloq OQC.
Setting the activation state to SoftActivation. Hello AppleCare.

И, кстати, Graphic Converter-то уже версии 6.0! lemkesoft.com.
На моих 128к все еще качается; надеюсь, неспроста это новая версия, а не 5.x.x.x.x (к чему мы привыкли за последние лет десять).

Ай-Да-Фон 5

iPhone2Mac.png

C iPhone можно управлять своим компьютером.
Mac OS X, Windows

(На этом iPhone пока пришлось вернуть компании, давшей его на тестирование – maczone.ru; думаю написать обзор на днях).
Коаксиальный Ethernet, NetBSD, эмулятор Atari – как только в iPhone снова попадет в руки.

Ай-Да-Фон 4

Да будь я ходь негр преклонных годов,
активировать iPhone смогу самостоятельно, без командной строки и без наличия PC (чего требовал метод DVD-Йона) – IActivator

Интересное:
System File And Directory List
Password for 694-5262-39.dmg (iPhone1,1_1.0_1A543a_Restore image)=xyzzy

Ай-да-Фон 2

iPhone_Heysan.png

На iPhone можно IM (Jabber, AOL, MSN, Yahoo Messenger, ICQ).

Ай-да-Фон 1

iPhone_Mail_1A543a.png

На iPhone можно читать почту (IMAP, POP, Exchange).

iSync Plug-in for SonyEricsson K320i

Месяц назал решил купить себе iPhone.
Ударил кулаком по столу, – хватит с меня этих Ericsson и кузенов их SonyEricsson (1018, t39, t68, t610, t610, k710 – числа Фибоначчи, панимашь)! Даешь Apple Technology at Work!

Но сперва час Х был перенесен Apple c WWDC на конец июня, а за неделю до 29 июня мой старый телефон пропал.
Что делать?

Кто старое помянет?

Сегодня (последний четверг Июня) международный день бэкапа!

Сделайте резервное копирование! Лучше раз в году чем никогда!
Скопируйте домашнюю папку, синхронизируйте телефон, man rsync и подпишите дискеты фломастером!

Бэкап, бэкап и еще раз бэкап!

Новый имидж

Фанаты ITIL/ITSM, администраторы, да и просто заблудшие пользователи Windows!
Что уместно включить в образ стандартного-типового-базового-АРМ-дефолтового офисного компьютера? Без особого административного фашизма, – пользователь может слушать музыку, пользоваться IM и разложить пасьянс “Косынка”.

Айфон-шмайфон

Feature Request!
Эх, хорошо было бы поставить в google.com/reader галочку “Не показывать новости про iPhone”.
Или даже “Не показывать новости про iPhone. ”

…MacNN, MacWorld, MacRumors, Digg/Apple, AppleInsider, ThinkSecret, Roughly Drafted, The Unofficial Apple Weblog, Binary Bonsai, Daring Fireball, Tao of Mac, Slashdot, ArsTechnica, Engadget…
Страшно представить, что будет твориться на этих сайтах в ближайшую неделю.

/*Sent from Ecto iPhone edition Beta 0.12a*/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *