Справочник Objective-C API
PDF Oxide поставляется с идиоматичными привязками для Objective-C (фреймворк PdfOxide / CocoaPod PdfOxide) поверх C ABI. Обёртки NSObject владеют своими нативными дескрипторами и освобождают их в -dealloc (или сразу через -close); возвращаемые C-строки и буферы копируются в NSString/NSData, а коды ошибок, отличные от успешного, всплывают как NSError в домене POXErrorDomain. Каждый публичный метод покрыт один к одному набором POXApiCoverageTests.
# Podfile
pod 'PdfOxide', '~> 0.3.69'
#import <PdfOxide/POXPdfOxide.h>
Про Rust API см. Справочник Rust API. Про Python API см. Справочник Python API. Про JavaScript API см. Справочник Node.js API или Справочник WASM API.
Все индексы страниц начинаются с нуля. Ограничивающие прямоугольники используют POXBbox { float x; float y; float width; float height; } в точках пользовательского пространства PDF; версия PDF возвращается как структура POXVersion { uint8_t major; uint8_t minor; }.
POXDocument
Основной класс для открытия, извлечения, рендеринга и анализа PDF-файла.
Открытие
+ (nullable instancetype)openPath:(NSString*)path error:(NSError**)error;
Открыть PDF по пути в файловой системе.
+ (nullable instancetype)openFromBytes:(NSData*)data error:(NSError**)error;
Открыть PDF из байтов в памяти.
+ (nullable instancetype)openWithPassword:(NSString*)path password:(NSString*)password error:(NSError**)error;
Открыть документ, защищённый паролем, за один шаг.
+ (nullable instancetype)openFromDocxBytes:(NSData*)data error:(NSError**)error;
+ (nullable instancetype)openFromPptxBytes:(NSData*)data error:(NSError**)error;
+ (nullable instancetype)openFromXlsxBytes:(NSData*)data error:(NSError**)error;
Преобразовать байты офисного документа в памяти (Word/PowerPoint/Excel) в открытый PDF-документ.
- (BOOL)authenticate:(NSString*)password error:(NSError**)error;
Аутентифицировать зашифрованный документ после открытия; возвращает YES при успехе, NO — при неверном пароле.
Экспорт в офисные форматы
- (nullable NSData*)toDocxWithError:(NSError**)error;
- (nullable NSData*)toPptxWithError:(NSError**)error;
- (nullable NSData*)toXlsxWithError:(NSError**)error;
Экспортировать документ в байты Word / PowerPoint / Excel.
Сведения о документе
- (NSInteger)pageCountError:(NSError**)error;
Число страниц или -1 при ошибке.
- (POXVersion)version;
Версия PDF в виде структуры POXVersion.
- (BOOL)isEncrypted;
- (BOOL)hasStructureTree;
- (BOOL)hasXfa;
Проверки наличия шифрования, дерева структуры тегированного PDF и XFA-формы.
Текст и конвертация
- (nullable NSString*)extractText:(NSInteger)page error:(NSError**)error;
Извлечь обычный текст с одной страницы.
- (nullable NSString*)toPlainText:(NSInteger)page error:(NSError**)error;
- (nullable NSString*)toMarkdown:(NSInteger)page error:(NSError**)error;
- (nullable NSString*)toHtml:(NSInteger)page error:(NSError**)error;
Преобразовать одну страницу в обычный текст, Markdown или HTML.
- (nullable NSString*)toPlainTextAllWithError:(NSError**)error;
- (nullable NSString*)toMarkdownAllWithError:(NSError**)error;
- (nullable NSString*)toHtmlAllWithError:(NSError**)error;
Преобразовать все страницы в обычный текст, Markdown или HTML.
- (nullable NSString*)extractStructuredJson:(NSInteger)page error:(NSError**)error;
Извлечь страницу как структурированный JSON (фрагменты, геометрия, шрифты).
Извлечение элементов
- (nullable NSArray<POXChar*>*)extractChars:(NSInteger)page error:(NSError**)error;
- (nullable NSArray<POXWord*>*)extractWords:(NSInteger)page error:(NSError**)error;
- (nullable NSArray<POXTextLine*>*)extractTextLines:(NSInteger)page error:(NSError**)error;
- (nullable NSArray<POXTable*>*)extractTables:(NSInteger)page error:(NSError**)error;
Извлечь символы, слова, текстовые строки и таблицы с метаданными позиционирования.
- (nullable NSArray<POXFont*>*)embeddedFonts:(NSInteger)page error:(NSError**)error;
- (nullable NSArray<POXImage*>*)embeddedImages:(NSInteger)page error:(NSError**)error;
- (nullable NSArray<POXAnnotation*>*)pageAnnotations:(NSInteger)page error:(NSError**)error;
- (nullable NSArray<POXPath*>*)extractPaths:(NSInteger)page error:(NSError**)error;
Извлечь встроенные шрифты, встроенные изображения, аннотации страницы и векторные пути.
Поиск
- (nullable NSArray<POXSearchResult*>*)search:(NSInteger)page term:(NSString*)term caseSensitive:(BOOL)caseSensitive error:(NSError**)error;
Найти term на одной странице.
- (nullable NSArray<POXSearchResult*>*)searchAll:(NSString*)term caseSensitive:(BOOL)caseSensitive error:(NSError**)error;
Найти term по всему документу.
Извлечение в прямоугольной области
- (nullable NSString*)extractTextInRect:(NSInteger)page x:(float)x y:(float)y width:(float)width height:(float)height error:(NSError**)error;
- (nullable NSArray<POXWord*>*)extractWordsInRect:(NSInteger)page x:(float)x y:(float)y width:(float)width height:(float)height error:(NSError**)error;
- (nullable NSArray<POXTextLine*>*)extractLinesInRect:(NSInteger)page x:(float)x y:(float)y width:(float)width height:(float)height error:(NSError**)error;
- (nullable NSArray<POXTable*>*)extractTablesInRect:(NSInteger)page x:(float)x y:(float)y width:(float)width height:(float)height error:(NSError**)error;
- (nullable NSArray<POXImage*>*)extractImagesInRect:(NSInteger)page x:(float)x y:(float)y width:(float)width height:(float)height error:(NSError**)error;
Извлечь текст, слова, строки, таблицы или изображения, ограниченные прямоугольной областью (в точках пользовательского пространства).
Автоматическое извлечение и классификация
- (nullable NSString*)extractTextAuto:(NSInteger)page error:(NSError**)error;
Автоматически выбрать нативное или OCR-извлечение текста для страницы.
- (nullable NSString*)extractAllTextWithError:(NSError**)error;
Извлечь текст из всего документа.
- (nullable NSString*)extractPageAuto:(NSInteger)page optionsJson:(nullable NSString*)optionsJson error:(NSError**)error;
Автоматически извлечь страницу с JSON-блоком параметров.
- (nullable NSString*)classifyPage:(NSInteger)page error:(NSError**)error;
- (nullable NSString*)classifyDocumentWithError:(NSError**)error;
Классифицировать одну страницу или весь документ (возвращает JSON классификации).
Удаление колонтитулов и артефактов
- (int32_t)eraseHeader:(NSInteger)page error:(NSError**)error;
- (int32_t)eraseFooter:(NSInteger)page error:(NSError**)error;
- (int32_t)eraseArtifacts:(NSInteger)page error:(NSError**)error;
Удалить верхний колонтитул, нижний колонтитул или артефакты на одной странице; возвращает число удалённых элементов.
- (int32_t)removeHeaders:(float)threshold error:(NSError**)error;
- (int32_t)removeFooters:(float)threshold error:(NSError**)error;
- (int32_t)removeArtifacts:(float)threshold error:(NSError**)error;
Удалить повторяющиеся верхние/нижние колонтитулы или артефакты по всему документу при превышении порога схожести threshold.
Формы
- (nullable NSArray<POXFormField*>*)formFieldsWithError:(NSError**)error;
Получить все поля AcroForm.
- (nullable NSData*)exportFormDataToBytes:(int32_t)formatType error:(NSError**)error;
Экспортировать данные формы в виде байтов FDF/XFDF (formatType выбирает формат).
- (BOOL)importFormDataFromPath:(NSString*)dataPath error:(NSError**)error;
- (BOOL)importFormFromFile:(NSString*)filename error:(NSError**)error;
Импортировать данные формы из файла FDF/XFDF.
Структура и метаданные
- (nullable NSString*)outlineWithError:(NSError**)error;
- (nullable NSString*)pageLabelsWithError:(NSError**)error;
- (nullable NSString*)xmpMetadataWithError:(NSError**)error;
Получить оглавление документа (закладки), диапазоны меток страниц и XMP-метаданные в виде JSON.
- (nullable NSData*)sourceBytesWithError:(NSError**)error;
Получить исходные байты PDF.
- (nullable NSString*)planSplitByBookmarks:(nullable NSString*)optionsJson error:(NSError**)error;
Вычислить план разбиения, группирующий страницы по закладкам верхнего уровня (возвращает JSON).
Аннотации / шрифты / поиск в виде JSON
- (nullable NSString*)annotationsJson:(NSInteger)page error:(NSError**)error;
- (nullable NSString*)embeddedFontsJson:(NSInteger)page error:(NSError**)error;
- (nullable NSString*)searchJson:(NSInteger)page term:(NSString*)term caseSensitive:(BOOL)caseSensitive error:(NSError**)error;
JSON-варианты аннотаций страницы, встроенных шрифтов и постраничного поиска.
Геометрия страницы и элементы
- (float)pageWidth:(NSInteger)pageIndex error:(NSError**)error;
- (float)pageHeight:(NSInteger)pageIndex error:(NSError**)error;
- (int32_t)pageRotation:(NSInteger)pageIndex error:(NSError**)error;
Ширина, высота и поворот страницы в градусах (-1 при ошибке).
- (nullable POXElementList*)pageElements:(NSInteger)pageIndex error:(NSError**)error;
Получить список элементов разметки для страницы. См. POXElementList.
- (POXPage*)pageAtIndex:(NSInteger)index;
Получить дескриптор страницы, привязанный к этому документу. См. POXPage.
Рендеринг
- (nullable POXRenderedImage*)renderPage:(NSInteger)pageIndex format:(int32_t)format error:(NSError**)error;
Отрендерить страницу в изображение (format 0 = PNG, 1 = JPEG).
- (nullable POXRenderedImage*)renderPageZoom:(NSInteger)pageIndex zoom:(float)zoom format:(int32_t)format error:(NSError**)error;
- (nullable POXRenderedImage*)renderPageThumbnail:(NSInteger)pageIndex size:(int32_t)size format:(int32_t)format error:(NSError**)error;
Отрендерить страницу с заданным коэффициентом масштабирования или как миниатюру с целевым размером size по большей стороне.
- (nullable POXRenderedImage*)renderPageWithOptions:(NSInteger)pageIndex
dpi:(int32_t)dpi
format:(int32_t)format
bgR:(float)bgR bgG:(float)bgG bgB:(float)bgB bgA:(float)bgA
transparentBackground:(int32_t)transparentBackground
renderAnnotations:(int32_t)renderAnnotations
jpegQuality:(int32_t)jpegQuality
error:(NSError**)error;
Рендеринг с полным набором параметров (DPI, фон RGBA, прозрачность, флаг аннотаций, качество JPEG).
- (nullable POXRenderedImage*)renderPageWithOptionsEx:(NSInteger)pageIndex
dpi:(int32_t)dpi
format:(int32_t)format
bgR:(float)bgR bgG:(float)bgG bgB:(float)bgB bgA:(float)bgA
transparentBackground:(int32_t)transparentBackground
renderAnnotations:(int32_t)renderAnnotations
jpegQuality:(int32_t)jpegQuality
excludedLayers:(NSArray<NSString*>*)excludedLayers
error:(NSError**)error;
Как renderPageWithOptions:, но дополнительно скрывает указанные слои OCG.
- (nullable POXRenderedImage*)renderPageRegion:(NSInteger)pageIndex cropX:(float)cropX cropY:(float)cropY cropWidth:(float)cropWidth cropHeight:(float)cropHeight format:(int32_t)format error:(NSError**)error;
Отрендерить прямоугольную область страницы (точки пользовательского пространства, начало координат внизу слева).
- (nullable POXRenderedImage*)renderPageFit:(NSInteger)pageIndex w:(int32_t)w h:(int32_t)h format:(int32_t)format error:(NSError**)error;
Отрендерить страницу с вписыванием в w × h пикселей с сохранением пропорций.
- (nullable POXRenderedImage*)renderPageRaw:(NSInteger)pageIndex dpi:(int32_t)dpi outWidth:(int32_t*)outWidth outHeight:(int32_t*)outHeight error:(NSError**)error;
Отрендерить страницу в необработанный буфер RGBA8888; выходные параметры получают размеры в пикселях.
- (int32_t)estimateRenderTime:(NSInteger)pageIndex error:(NSError**)error;
Оценить время рендеринга (в единицах движка) для страницы или -1 при ошибке.
OCR
- (BOOL)pageNeedsOcr:(NSInteger)pageIndex error:(NSError**)error;
Определить, лишена ли страница извлекаемого текста и выиграет ли от OCR.
- (nullable NSString*)ocrExtractText:(NSInteger)pageIndex engine:(nullable POXOcrEngine*)engine error:(NSError**)error;
Извлечь текст с помощью OCR; передайте nil для извлечения только нативного текста. См. POXOcrEngine.
Проверка соответствия
- (nullable POXPdfAResults*)validatePdfA:(int32_t)level error:(NSError**)error;
- (nullable POXUaResults*)validatePdfUa:(int32_t)level error:(NSError**)error;
- (nullable POXPdfXResults*)validatePdfX:(int32_t)level error:(NSError**)error;
Проверить соответствие PDF/A, PDF/UA или PDF/X; level выбирает подуровень. Возвращает дескриптор результата.
- (BOOL)convertToPdfA:(int32_t)level error:(NSError**)error;
Конвертировать документ в PDF/A на указанном уровне соответствия.
Подписи (на уровне документа)
- (BOOL)sign:(POXCertificate*)certificate reason:(nullable NSString*)reason location:(nullable NSString*)location error:(NSError**)error;
Применить базовую цифровую подпись с загруженным сертификатом.
- (int32_t)signatureCountWithError:(NSError**)error;
- (nullable POXSignatureInfo*)signatureAtIndex:(int32_t)index error:(NSError**)error;
- (int32_t)verifyAllSignaturesWithError:(NSError**)error;
- (int32_t)hasTimestampWithError:(NSError**)error;
- (nullable POXDss*)dssWithError:(NSError**)error;
Подсчитать подписи, получить сведения о подписи, проверить все подписи, проверить наличие отметки времени документа и прочитать хранилище безопасности документа (Document Security Store).
Жизненный цикл
- (void)close;
Освободить нативный дескриптор немедленно (идемпотентно).
POXPage
Дескриптор страницы, привязанный к POXDocument (отсчёт с нуля). Удерживает сильную ссылку на свой документ, поэтому не может пережить его.
- (nullable NSString*)text:(NSError**)error;
- (nullable NSString*)markdown:(NSError**)error;
- (nullable NSString*)html:(NSError**)error;
- (nullable NSString*)plainText:(NSError**)error;
Извлечь текст, Markdown, HTML или обычный текст с сохранением вёрстки для этой страницы.
POXPdf
PDF, созданный построителем или фабрикой-обёрткой.
Конструкторы
+ (nullable instancetype)fromMarkdown:(NSString*)markdown error:(NSError**)error;
+ (nullable instancetype)fromHtml:(NSString*)html error:(NSError**)error;
+ (nullable instancetype)fromText:(NSString*)text error:(NSError**)error;
Построить PDF из Markdown, HTML или обычного текста.
+ (nullable instancetype)fromImage:(NSString*)path error:(NSError**)error;
+ (nullable instancetype)fromImageBytes:(NSData*)data error:(NSError**)error;
Построить одностраничный PDF, оборачивающий файл изображения или байты изображения в памяти.
+ (nullable instancetype)fromHtml:(NSString*)html css:(NSString*)css fontBytes:(nullable NSData*)fontBytes error:(NSError**)error;
Построить PDF из HTML + CSS с одним необязательным встроенным шрифтом.
+ (nullable instancetype)fromHtml:(NSString*)html css:(NSString*)css families:(NSArray<NSString*>*)families fonts:(NSArray<NSData*>*)fonts error:(NSError**)error;
Построить PDF из HTML + CSS с каскадом из нескольких шрифтов (параллельные массивы families/fonts).
Методы
- (BOOL)saveToPath:(NSString*)path error:(NSError**)error;
- (nullable NSData*)toBytesWithError:(NSError**)error;
- (NSInteger)pageCountError:(NSError**)error;
- (void)close;
Сохранить по пути, получить байты PDF, получить число страниц (-1 при ошибке) или освободить нативный дескриптор.
POXDocumentEditor
PDF, открытый для редактирования на месте. Операции со статус-кодом передают сбои как NSError; запросы is* возвращают BOOL.
Открытие
+ (nullable instancetype)openEditor:(NSString*)path error:(NSError**)error;
+ (nullable instancetype)openFromBytes:(NSData*)data error:(NSError**)error;
Открыть PDF для редактирования по пути или из байтов в памяти.
Состояние и метаданные
- (NSInteger)pageCountError:(NSError**)error;
- (POXVersion)version;
- (BOOL)isModified;
- (nullable NSString*)sourcePathError:(NSError**)error;
Число страниц, версия PDF, флаг ожидающих изменений и исходный путь редактора.
- (nullable NSString*)producerError:(NSError**)error;
- (BOOL)setProducer:(NSString*)value error:(NSError**)error;
- (nullable NSString*)creationDateError:(NSError**)error;
- (BOOL)setCreationDate:(NSString*)date error:(NSError**)error;
Получить/задать /Info.Producer и /Info.CreationDate документа.
Операции со страницами
- (BOOL)deletePage:(NSInteger)page error:(NSError**)error;
- (BOOL)movePageFrom:(NSInteger)from to:(NSInteger)to error:(NSError**)error;
Удалить или переставить страницы.
- (BOOL)rotatePage:(NSInteger)page byDegrees:(NSInteger)degrees error:(NSError**)error;
- (BOOL)rotateAllPages:(NSInteger)degrees error:(NSError**)error;
- (BOOL)setPageRotation:(NSInteger)page degrees:(NSInteger)degrees error:(NSError**)error;
- (NSInteger)pageRotation:(NSInteger)page error:(NSError**)error;
Повернуть одну страницу, все страницы, задать абсолютный поворот или прочитать текущий поворот.
- (BOOL)cropMarginsLeft:(float)left right:(float)right top:(float)top bottom:(float)bottom error:(NSError**)error;
Обрезать все страницы по полям.
- (POXBbox)pageCropBox:(NSInteger)page error:(NSError**)error;
- (BOOL)setPageCropBox:(NSInteger)page box:(POXBbox)box error:(NSError**)error;
- (POXBbox)pageMediaBox:(NSInteger)page error:(NSError**)error;
- (BOOL)setPageMediaBox:(NSInteger)page box:(POXBbox)box error:(NSError**)error;
Получить/задать CropBox и MediaBox страницы.
Редактирование (вымарывание)
- (BOOL)applyAllRedactions:(NSError**)error;
- (BOOL)applyPageRedactions:(NSInteger)page error:(NSError**)error;
- (BOOL)isPageMarkedForRedaction:(NSInteger)page;
- (BOOL)unmarkPageForRedaction:(NSInteger)page error:(NSError**)error;
Применить отложенные вымарывания (все или постранично), проверить и снять отметку состояния вымарывания.
- (BOOL)redactionAddPage:(NSInteger)page x1:(double)x1 y1:(double)y1 x2:(double)x2 y2:(double)y2 r:(double)r g:(double)g b:(double)b error:(NSError**)error;
- (int32_t)redactionCount:(NSInteger)page error:(NSError**)error;
- (int32_t)redactionApplyScrubMetadata:(BOOL)scrubMetadata r:(double)r g:(double)g b:(double)b error:(NSError**)error;
- (int32_t)redactionScrubMetadataWithError:(NSError**)error;
Геометрическое вымарывание: поставить в очередь закрашивающий прямоугольник, подсчитать прямоугольники в очереди, деструктивно применить (с возвратом числа удалённых глифов) и отдельная очистка метаданных/JS/встроенных файлов.
Удаление областей
- (BOOL)eraseRegion:(NSInteger)page x:(float)x y:(float)y w:(float)w h:(float)h error:(NSError**)error;
- (BOOL)eraseRegions:(NSInteger)page rects:(NSArray<NSValue*>*)rects error:(NSError**)error;
- (BOOL)clearEraseRegions:(NSInteger)page error:(NSError**)error;
Удалить один прямоугольник, несколько прямоугольников типа POXBbox или очистить отложенные удаления.
Сведение (flatten)
- (BOOL)flattenForms:(NSError**)error;
- (BOOL)flattenFormsOnPage:(NSInteger)page error:(NSError**)error;
- (BOOL)flattenAnnotations:(NSInteger)page error:(NSError**)error;
- (BOOL)flattenAllAnnotations:(NSError**)error;
Свести все формы, формы на странице, аннотации на странице или все аннотации.
- (NSInteger)flattenWarningsCount;
- (nullable NSString*)flattenWarning:(NSInteger)index error:(NSError**)error;
- (BOOL)isPageMarkedForFlatten:(NSInteger)page;
- (BOOL)unmarkPageForFlatten:(NSInteger)page error:(NSError**)error;
Просмотреть предупреждения сведения и постраничную отметку сведения.
Формы
- (BOOL)setFormField:(NSString*)name value:(NSString*)value error:(NSError**)error;
- (BOOL)importFdfBytes:(NSData*)data error:(NSError**)error;
- (BOOL)importXfdfBytes:(NSData*)data error:(NSError**)error;
Задать значение поля формы по имени; импортировать необработанные байты FDF / XFDF.
Слияние / конвертация / вложение
- (BOOL)mergeFrom:(NSString*)sourcePath error:(NSError**)error;
- (BOOL)mergeFromBytes:(NSData*)data error:(NSError**)error;
- (BOOL)convertToPdfA:(NSInteger)level error:(NSError**)error;
- (BOOL)embedFile:(NSString*)name data:(NSData*)data error:(NSError**)error;
- (nullable NSData*)extractPagesToBytes:(NSArray<NSNumber*>*)pages error:(NSError**)error;
Слить другой PDF (путь или байты), конвертировать в PDF/A на месте, прикрепить встроенный файл или извлечь подмножество страниц в новый PDF в памяти.
Штрихкоды
- (BOOL)addBarcode:(POXBarcode*)barcode page:(NSInteger)page x:(float)x y:(float)y width:(float)width height:(float)height error:(NSError**)error;
Разместить сгенерированный штрихкод на странице. См. POXBarcode.
Сохранение
- (BOOL)saveToPath:(NSString*)path error:(NSError**)error;
- (nullable NSData*)saveToBytesWithError:(NSError**)error;
- (nullable NSData*)saveToBytesCompress:(BOOL)compress garbageCollect:(BOOL)garbageCollect linearize:(BOOL)linearize error:(NSError**)error;
- (BOOL)saveEncryptedToPath:(NSString*)path userPassword:(NSString*)userPassword ownerPassword:(NSString*)ownerPassword error:(NSError**)error;
- (nullable NSData*)saveEncryptedToBytesWithUserPassword:(NSString*)userPassword ownerPassword:(NSString*)ownerPassword error:(NSError**)error;
- (void)close;
Сохранить по пути или в байты (с опциональным сжатием/сборкой мусора/линеаризацией), сохранить с AES-шифрованием по пути или в байты, или освободить нативный дескриптор.
POXDocumentBuilder
Текучий (fluent) построитель, создающий совершенно новый PDF.
+ (nullable instancetype)createWithError:(NSError**)error;
Создать новый, пустой построитель документа.
Метаданные
- (BOOL)setTitle:(NSString*)title error:(NSError**)error;
- (BOOL)setAuthor:(NSString*)author error:(NSError**)error;
- (BOOL)setSubject:(NSString*)subject error:(NSError**)error;
- (BOOL)setKeywords:(NSString*)keywords error:(NSError**)error;
- (BOOL)setCreator:(NSString*)creator error:(NSError**)error;
- (BOOL)onOpen:(NSString*)script error:(NSError**)error;
Задать метаданные документа и действие JavaScript уровня документа при открытии.
Тегированный / доступный PDF
- (BOOL)taggedPdfUa1:(NSError**)error;
- (BOOL)language:(NSString*)lang error:(NSError**)error;
- (BOOL)roleMapCustom:(NSString*)custom standard:(NSString*)standard error:(NSError**)error;
Включить тегирование PDF/UA-1, задать язык документа и добавить запись соответствия пользовательской роли стандартной.
Шрифты
- (BOOL)registerEmbeddedFont:(NSString*)name font:(POXEmbeddedFont*)font error:(NSError**)error;
Зарегистрировать шрифт TTF/OTF под именем name (передаёт владение нативным дескриптором шрифта). См. POXEmbeddedFont.
Страницы
- (nullable POXPageBuilder*)a4PageWithError:(NSError**)error;
- (nullable POXPageBuilder*)letterPageWithError:(NSError**)error;
- (nullable POXPageBuilder*)pageWithWidth:(float)width height:(float)height error:(NSError**)error;
Начать страницу A4, US-Letter или произвольного размера. См. POXPageBuilder.
Сборка / сохранение
- (nullable NSData*)buildWithError:(NSError**)error;
- (BOOL)saveToPath:(NSString*)path error:(NSError**)error;
- (BOOL)saveEncryptedToPath:(NSString*)path userPassword:(NSString*)userPassword ownerPassword:(NSString*)ownerPassword error:(NSError**)error;
- (nullable NSData*)toBytesEncryptedWithUserPassword:(NSString*)userPassword ownerPassword:(NSString*)ownerPassword error:(NSError**)error;
- (void)close;
Собрать байты PDF, сохранить по пути, сохранить с AES-шифрованием по пути или в байты, или освободить нативный дескриптор.
POXPageBuilder
Страница, строящаяся внутри POXDocumentBuilder. Большинство операций возвращают BOOL и связываются цепочкой через родителя. Вызовите -done:, чтобы зафиксировать страницу, или -close, чтобы отбросить её.
Текстовая вёрстка
- (BOOL)font:(NSString*)name size:(float)size error:(NSError**)error;
- (BOOL)at:(float)x y:(float)y error:(NSError**)error;
- (BOOL)text:(NSString*)text error:(NSError**)error;
- (BOOL)heading:(uint8_t)level text:(NSString*)text error:(NSError**)error;
- (BOOL)paragraph:(NSString*)text error:(NSError**)error;
- (BOOL)space:(float)points error:(NSError**)error;
- (BOOL)horizontalRule:(NSError**)error;
- (BOOL)newline:(NSError**)error;
- (BOOL)newPageSameSize:(NSError**)error;
Задать шрифт, позицию курсора и вывести текст, заголовки, абзацы, вертикальный отступ, горизонтальную линию, перенос строки или новую страницу того же размера.
- (BOOL)textInRectX:(float)x y:(float)y w:(float)w h:(float)h text:(NSString*)text align:(int32_t)align error:(NSError**)error;
Расположить перенесённый, выровненный текст внутри прямоугольника.
Встроенные текстовые фрагменты
- (BOOL)inlineText:(NSString*)text error:(NSError**)error;
- (BOOL)inlineBold:(NSString*)text error:(NSError**)error;
- (BOOL)inlineItalic:(NSString*)text error:(NSError**)error;
- (BOOL)inlineColorR:(float)r g:(float)g b:(float)b text:(NSString*)text error:(NSError**)error;
Добавить встроенные текстовые фрагменты (обычный, полужирный, курсив или окрашенный в RGB).
Сноски / колонки
- (BOOL)footnoteRefMark:(NSString*)refMark noteText:(NSString*)noteText error:(NSError**)error;
- (BOOL)columnsCount:(uint32_t)columnCount gapPt:(float)gapPt text:(NSString*)text error:(NSError**)error;
Добавить ссылку на сноску + текст примечания или разнести текст по нескольким колонкам.
Ссылки и действия
- (BOOL)linkUrl:(NSString*)url error:(NSError**)error;
- (BOOL)linkPage:(NSInteger)page error:(NSError**)error;
- (BOOL)linkNamed:(NSString*)destination error:(NSError**)error;
- (BOOL)linkJavascript:(NSString*)script error:(NSError**)error;
- (BOOL)onOpen:(NSString*)script error:(NSError**)error;
- (BOOL)onClose:(NSString*)script error:(NSError**)error;
Добавить ссылки на URL / страницу / именованное назначение / JavaScript и действия при открытии/закрытии страницы.
JS-действия полей формы
- (BOOL)fieldKeystroke:(NSString*)script error:(NSError**)error;
- (BOOL)fieldFormat:(NSString*)script error:(NSError**)error;
- (BOOL)fieldValidate:(NSString*)script error:(NSError**)error;
- (BOOL)fieldCalculate:(NSString*)script error:(NSError**)error;
Прикрепить JavaScript для нажатия клавиши / форматирования / валидации / вычисления к последнему добавленному полю.
Текстовые украшения
- (BOOL)highlightR:(float)r g:(float)g b:(float)b error:(NSError**)error;
- (BOOL)underlineR:(float)r g:(float)g b:(float)b error:(NSError**)error;
- (BOOL)strikeoutR:(float)r g:(float)g b:(float)b error:(NSError**)error;
- (BOOL)squigglyR:(float)r g:(float)g b:(float)b error:(NSError**)error;
Применить выделение, подчёркивание, зачёркивание или волнистое подчёркивание к предыдущему текстовому элементу.
Аннотации
- (BOOL)stickyNote:(NSString*)text error:(NSError**)error;
- (BOOL)stickyNoteAt:(float)x y:(float)y text:(NSString*)text error:(NSError**)error;
- (BOOL)watermark:(NSString*)text error:(NSError**)error;
- (BOOL)watermarkConfidential:(NSError**)error;
- (BOOL)watermarkDraft:(NSError**)error;
- (BOOL)stamp:(NSString*)typeName error:(NSError**)error;
- (BOOL)freetextAtX:(float)x y:(float)y w:(float)w h:(float)h text:(NSString*)text error:(NSError**)error;
Добавить заметки-стикеры, водяные знаки (пользовательский / CONFIDENTIAL / DRAFT), именованный штамп и аннотации свободного текста.
Поля формы
- (BOOL)textFieldName:(NSString*)name x:(float)x y:(float)y w:(float)w h:(float)h defaultValue:(nullable NSString*)defaultValue error:(NSError**)error;
- (BOOL)checkboxName:(NSString*)name x:(float)x y:(float)y w:(float)w h:(float)h checked:(BOOL)checked error:(NSError**)error;
- (BOOL)comboBoxName:(NSString*)name x:(float)x y:(float)y w:(float)w h:(float)h options:(NSArray<NSString*>*)options selected:(nullable NSString*)selected error:(NSError**)error;
- (BOOL)radioGroupName:(NSString*)name values:(NSArray<NSString*>*)values xs:(NSArray<NSNumber*>*)xs ys:(NSArray<NSNumber*>*)ys ws:(NSArray<NSNumber*>*)ws hs:(NSArray<NSNumber*>*)hs selected:(nullable NSString*)selected error:(NSError**)error;
- (BOOL)pushButtonName:(NSString*)name x:(float)x y:(float)y w:(float)w h:(float)h caption:(NSString*)caption error:(NSError**)error;
- (BOOL)signatureFieldName:(NSString*)name x:(float)x y:(float)y w:(float)w h:(float)h error:(NSError**)error;
Добавить текстовые поля, флажки, выпадающие списки, группы переключателей, кнопки и поля подписи.
Штрихкоды
- (BOOL)barcode1d:(int32_t)barcodeType data:(NSString*)data x:(float)x y:(float)y w:(float)w h:(float)h error:(NSError**)error;
- (BOOL)barcodeQrData:(NSString*)data x:(float)x y:(float)y size:(float)size error:(NSError**)error;
Нарисовать 1D-штрихкод или QR-код прямо на странице.
Изображения
- (BOOL)image:(NSData*)bytes x:(float)x y:(float)y w:(float)w h:(float)h error:(NSError**)error;
- (BOOL)imageWithAlt:(NSData*)bytes x:(float)x y:(float)y w:(float)w h:(float)h altText:(NSString*)altText error:(NSError**)error;
- (BOOL)imageArtifact:(NSData*)bytes x:(float)x y:(float)y w:(float)w h:(float)h error:(NSError**)error;
Разместить изображение, изображение с альтернативным текстом для доступности или артефактное (декоративное) изображение.
Векторная графика
- (BOOL)rectX:(float)x y:(float)y w:(float)w h:(float)h error:(NSError**)error;
- (BOOL)filledRectX:(float)x y:(float)y w:(float)w h:(float)h r:(float)r g:(float)g b:(float)b error:(NSError**)error;
- (BOOL)lineX1:(float)x1 y1:(float)y1 x2:(float)x2 y2:(float)y2 error:(NSError**)error;
- (BOOL)strokeRectX:(float)x y:(float)y w:(float)w h:(float)h width:(float)width r:(float)r g:(float)g b:(float)b error:(NSError**)error;
- (BOOL)strokeLineX1:(float)x1 y1:(float)y1 x2:(float)x2 y2:(float)y2 width:(float)width r:(float)r g:(float)g b:(float)b error:(NSError**)error;
- (BOOL)strokeRectDashedX:(float)x y:(float)y w:(float)w h:(float)h width:(float)width r:(float)r g:(float)g b:(float)b dashArray:(NSArray<NSNumber*>*)dashArray phase:(float)phase error:(NSError**)error;
- (BOOL)strokeLineDashedX1:(float)x1 y1:(float)y1 x2:(float)x2 y2:(float)y2 width:(float)width r:(float)r g:(float)g b:(float)b dashArray:(NSArray<NSNumber*>*)dashArray phase:(float)phase error:(NSError**)error;
Нарисовать прямоугольники (контур / заливка / обводка / пунктир) и линии (обычная / обводка / пунктир).
Таблицы
- (BOOL)tableColumns:(NSArray<NSNumber*>*)widths aligns:(NSArray<NSNumber*>*)aligns rows:(NSArray<NSArray<NSString*>*>*)rows hasHeader:(BOOL)hasHeader error:(NSError**)error;
Отрисовать полную таблицу с шириной колонок, выравниванием и строками.
Потоковые таблицы
- (BOOL)streamingTableBeginHeaders:(NSArray<NSString*>*)headers widths:(NSArray<NSNumber*>*)widths aligns:(NSArray<NSNumber*>*)aligns repeatHeader:(BOOL)repeatHeader error:(NSError**)error;
- (BOOL)streamingTableBeginV2Headers:(NSArray<NSString*>*)headers widths:(NSArray<NSNumber*>*)widths aligns:(NSArray<NSNumber*>*)aligns repeatHeader:(BOOL)repeatHeader mode:(int32_t)mode sampleRows:(NSInteger)sampleRows minColWidthPt:(float)minColWidthPt maxColWidthPt:(float)maxColWidthPt maxRowspan:(NSInteger)maxRowspan error:(NSError**)error;
- (BOOL)streamingTableSetBatchSize:(NSInteger)batchSize error:(NSError**)error;
- (NSInteger)streamingTablePendingRowCount;
- (NSInteger)streamingTableBatchCount;
- (BOOL)streamingTableFlush:(NSError**)error;
- (BOOL)streamingTablePushRow:(NSArray<NSString*>*)cells error:(NSError**)error;
- (BOOL)streamingTablePushRowV2:(NSArray<NSString*>*)cells rowspans:(nullable NSArray<NSNumber*>*)rowspans error:(NSError**)error;
- (BOOL)streamingTableFinish:(NSError**)error;
Начать потоковую таблицу (базовую или V2 с автоматической раскладкой), настроить размер пакета, добавлять строки (с опциональными rowspan), сбрасывать буфер и завершать — для таблиц, слишком больших, чтобы материализовать их целиком сразу.
Фиксация
- (BOOL)done:(NSError**)error;
- (void)close;
Зафиксировать страницу в родительском построителе или отбросить её.
POXEmbeddedFont
Шрифт TTF/OTF, загруженный для встраивания. Владение передаётся построителю при успешном вызове registerEmbeddedFont:font:.
+ (nullable instancetype)fromPath:(NSString*)path error:(NSError**)error;
+ (nullable instancetype)fromBytes:(NSData*)data name:(nullable NSString*)name error:(NSError**)error;
- (void)close;
Загрузить шрифт по пути или из байтов (name может быть nil, чтобы использовать PostScript-имя), или освободить нативный дескриптор.
POXBarcode
Сгенерированное изображение штрихкода / QR-кода.
+ (nullable instancetype)generateQrCode:(NSString*)data errorCorrection:(int32_t)errorCorrection sizePx:(int32_t)sizePx error:(NSError**)error;
+ (nullable instancetype)generateBarcode:(NSString*)data format:(int32_t)format sizePx:(int32_t)sizePx error:(NSError**)error;
Сгенерировать QR-код (с уровнем коррекции ошибок) или 1D/2D-штрихкод заданного format.
- (nullable NSString*)dataError:(NSError**)error;
- (int32_t)formatError:(NSError**)error;
- (float)confidenceError:(NSError**)error;
- (nullable NSData*)imagePngWithSizePx:(int32_t)sizePx error:(NSError**)error;
- (nullable NSString*)svgWithSizePx:(int32_t)sizePx error:(NSError**)error;
- (void)close;
Прочитать полезную нагрузку, код формата и достоверность распознавания; закодировать в байты PNG или строку SVG; или освободить нативный дескриптор.
POXOcrEngine
Движок OCR на основе файлов моделей детекции/распознавания/словаря.
+ (nullable instancetype)createWithDetModelPath:(NSString*)detModelPath recModelPath:(NSString*)recModelPath dictPath:(NSString*)dictPath error:(NSError**)error;
- (nullable void*)POX_engineHandle;
- (void)close;
Создать движок из путей к модели и словарю, получить необработанный дескриптор движка для ocrExtractText:engine:error: или освободить нативный дескриптор.
POXElementList
Список элементов разметки для страницы.
- (int32_t)count;
- (nullable NSString*)typeAtIndex:(int32_t)index error:(NSError**)error;
- (nullable NSString*)textAtIndex:(int32_t)index error:(NSError**)error;
- (POXBbox)rectAtIndex:(int32_t)index error:(NSError**)error;
- (nullable NSString*)toJsonWithError:(NSError**)error;
- (void)close;
Подсчитать элементы; прочитать тип, текст и ограничивающий прямоугольник каждого элемента; сериализовать весь список в JSON; или освободить нативный дескриптор.
POXRenderer
Самостоятельный дескриптор рендерера (независимый от документа).
+ (nullable instancetype)createWithDpi:(int32_t)dpi format:(int32_t)format quality:(int32_t)quality antiAlias:(BOOL)antiAlias error:(NSError**)error;
- (void)close;
Создать настроенный рендерер (DPI, формат, качество, сглаживание) или освободить нативный дескриптор.
Цифровые подписи и PKI
POXCertificate
Загруженный сертификат для подписи / проверки.
+ (nullable instancetype)loadFromBytes:(NSData*)data password:(NSString*)password error:(NSError**)error;
+ (nullable instancetype)loadFromPemCert:(NSString*)certPem keyPem:(NSString*)keyPem error:(NSError**)error;
Загрузить учётные данные из байтов PKCS#12 + пароля или из сертификата PEM + приватного ключа.
- (nullable NSString*)subjectError:(NSError**)error;
- (nullable NSString*)issuerError:(NSError**)error;
- (nullable NSString*)serialError:(NSError**)error;
- (BOOL)validityNotBefore:(int64_t*)notBefore notAfter:(int64_t*)notAfter error:(NSError**)error;
- (int32_t)isValidError:(NSError**)error;
- (void)close;
Прочитать субъект / издателя / серийный номер, окно действительности (секунды эпохи Unix), текущую действительность (1/0/-1) или освободить нативный дескриптор.
POXSignatureInfo
Сведения о подписи, прочитанной из документа.
- (nullable NSString*)signerNameError:(NSError**)error;
- (nullable NSString*)signingReasonError:(NSError**)error;
- (nullable NSString*)signingLocationError:(NSError**)error;
- (int64_t)signingTimeError:(NSError**)error;
- (nullable POXCertificate*)certificateError:(NSError**)error;
- (int32_t)padesLevelError:(NSError**)error;
- (BOOL)hasTimestampError:(NSError**)error;
- (nullable POXTimestamp*)timestampError:(NSError**)error;
- (BOOL)addTimestamp:(POXTimestamp*)timestamp error:(NSError**)error;
- (int32_t)verifyError:(NSError**)error;
- (int32_t)verifyDetached:(NSData*)pdf error:(NSError**)error;
- (void)close;
Прочитать подписавшего/причину/место/время, сертификат подписавшего, базовый уровень PAdES и отметку времени; прикрепить отметку времени; криптографически проверить (verifyError:) или сквозную проверку по полным байтам PDF (verifyDetached:).
POXTimestamp
Разобранный токен отметки времени RFC 3161.
+ (nullable instancetype)parse:(NSData*)data error:(NSError**)error;
- (nullable NSData*)tokenError:(NSError**)error;
- (nullable NSData*)messageImprintError:(NSError**)error;
- (int64_t)timeError:(NSError**)error;
- (nullable NSString*)serialError:(NSError**)error;
- (nullable NSString*)tsaNameError:(NSError**)error;
- (nullable NSString*)policyOidError:(NSError**)error;
- (int32_t)hashAlgorithmError:(NSError**)error;
- (BOOL)verifyError:(NSError**)error;
- (void)close;
Разобрать DER-токен; прочитать необработанные байты токена, отпечаток сообщения, время, серийный номер, имя TSA, OID политики и алгоритм хеширования; проверить; или освободить нативный дескриптор.
POXTsaClient
Клиент TSA (RFC 3161).
+ (nullable instancetype)createWithUrl:(NSString*)url username:(nullable NSString*)username password:(nullable NSString*)password timeout:(int32_t)timeout hashAlgo:(int32_t)hashAlgo useNonce:(BOOL)useNonce certReq:(BOOL)certReq error:(NSError**)error;
- (nullable POXTimestamp*)requestTimestamp:(NSData*)data error:(NSError**)error;
- (nullable POXTimestamp*)requestTimestampHash:(NSData*)hash hashAlgo:(int32_t)hashAlgo error:(NSError**)error;
- (void)close;
Создать клиент, запросить отметку времени по данным или предварительно вычисленному хешу, или освободить нативный дескриптор.
POXDss
Хранилище безопасности документа (Document Security Store), прочитанное из документа.
- (int32_t)certCount;
- (int32_t)crlCount;
- (int32_t)ocspCount;
- (int32_t)vriCount;
- (nullable NSData*)certAtIndex:(int32_t)index error:(NSError**)error;
- (nullable NSData*)crlAtIndex:(int32_t)index error:(NSError**)error;
- (nullable NSData*)ocspAtIndex:(int32_t)index error:(NSError**)error;
- (void)close;
Подсчитать и прочитать сертификаты DER, CRL и ответы OCSP (плюс число VRI) в DSS.
POXSigning
Точки входа верхнего уровня для подписи и настройка журналирования библиотеки (методы класса).
+ (nullable NSData*)signBytes:(NSData*)pdf certificate:(POXCertificate*)certificate reason:(nullable NSString*)reason location:(nullable NSString*)location error:(NSError**)error;
Подписать необработанные байты PDF базовой (не PAdES) подписью.
+ (nullable NSData*)signBytesPades:(NSData*)pdf certificate:(POXCertificate*)certificate level:(int32_t)level tsaUrl:(nullable NSString*)tsaUrl reason:(nullable NSString*)reason location:(nullable NSString*)location certs:(NSArray<NSData*>*)certs crls:(NSArray<NSData*>*)crls ocsps:(NSArray<NSData*>*)ocsps error:(NSError**)error;
Подписать необработанные байты PDF на базовом уровне PAdES с материалом отзыва.
+ (nullable NSData*)signBytesPadesOpts:(NSData*)pdf options:(POXPadesSignOptions*)options error:(NSError**)error;
Подписать необработанные байты PDF с использованием объекта конфигурации POXPadesSignOptions.
+ (void)setLogLevel:(int32_t)level;
+ (int32_t)logLevel;
Задать / получить глобальный уровень журналирования (0=Off … 5=Trace).
POXPadesSignOptions
Параметры подписи PAdES (вариант со структурой-указателем). Все поля — свойства:
| Свойство | Тип | Описание |
|---|---|---|
certificate |
POXCertificate* |
Сертификат подписи |
level |
int32_t |
Базовый уровень PAdES (0=B-B, 1=B-T, 2=B-LT) |
tsaUrl |
NSString* |
URL TSA (nullable) |
reason |
NSString* |
Причина подписи (nullable) |
location |
NSString* |
Место подписи (nullable) |
certs / crls / ocsps |
NSArray<NSData*>* |
Материал отзыва в кодировке DER (B-LT) |
Типы результатов проверки соответствия
POXPdfAResults
- (BOOL)isCompliantError:(NSError**)error;
- (int32_t)errorCount;
- (int32_t)warningCount;
- (NSArray<NSString*>*)errors;
- (void)close;
Результат проверки PDF/A: флаг соответствия, число ошибок/предупреждений, сообщения об ошибках.
POXUaResults
- (BOOL)isAccessibleError:(NSError**)error;
- (int32_t)errorCount;
- (int32_t)warningCount;
- (NSArray<NSString*>*)errors;
- (NSArray<NSString*>*)warnings;
- (BOOL)stats:(POXUaStats*)stats error:(NSError**)error;
- (void)close;
Результат проверки доступности PDF/UA: флаг доступности, число ошибок/предупреждений и сообщения, а также структура POXUaStats с подсчётом элементов.
POXPdfXResults
- (BOOL)isCompliantError:(NSError**)error;
- (int32_t)errorCount;
- (NSArray<NSString*>*)errors;
- (void)close;
Результат проверки PDF/X: флаг соответствия, число ошибок, сообщения об ошибках.
Утилиты верхнего уровня
POXTools
+ (nullable NSData*)merge:(NSArray<NSString*>*)paths error:(NSError**)error;
+ (nullable NSData*)addTimestamp:(NSData*)pdfData sigIndex:(int32_t)sigIndex tsaUrl:(NSString*)tsaUrl error:(NSError**)error;
Слить PDF-файлы по указанным путям в один PDF в памяти; добавить документную отметку времени RFC 3161 к подписи.
POXCrypto
+ (nullable NSString*)activeProviderWithError:(NSError**)error;
+ (nullable NSString*)cbomWithError:(NSError**)error;
+ (nullable NSString*)inventoryWithError:(NSError**)error;
+ (nullable NSString*)policyWithError:(NSError**)error;
+ (int32_t)fipsAvailable;
+ (int32_t)useFips;
+ (int32_t)setPolicy:(NSString*)spec;
Интроспекция криптопровайдера (активный провайдер, CycloneDX CBOM, инвентаризация, политика) и управление политикой FIPS.
POXModels
+ (nullable NSString*)manifestWithError:(NSError**)error;
+ (int32_t)prefetchAvailable;
+ (nullable NSString*)prefetchModels:(NSString*)languagesCsv error:(NSError**)error;
Прочитать манифест поставляемых моделей, проверить доступность предварительной загрузки и предварительно загрузить ML-модели для указанных языковых кодов.
POXConfig
+ (int64_t)setMaxOpsPerStream:(int64_t)limit;
+ (int32_t)setPreserveUnmappedGlyphs:(int32_t)preserve;
Глобальные процессные настройки: ограничить число операторов, декодируемых на поток содержимого, и переключить сохранение неотображённых глифов в извлечённом тексте. Каждый метод возвращает предыдущее значение.
Типы значений
Эти доступные только для чтения типы NSObject возвращаются методами извлечения выше.
POXChar
| Свойство | Тип | Описание |
|---|---|---|
character |
uint32_t |
Кодовая точка Unicode |
bbox |
POXBbox |
Ограничивающий прямоугольник |
fontName |
NSString* |
Имя шрифта PostScript |
fontSize |
float |
Размер шрифта в точках |
POXWord
| Свойство | Тип | Описание |
|---|---|---|
text |
NSString* |
Текст слова |
bbox |
POXBbox |
Ограничивающий прямоугольник |
fontName |
NSString* |
Имя шрифта PostScript |
fontSize |
float |
Размер шрифта в точках |
bold |
BOOL |
Является ли слово полужирным |
POXTextLine
| Свойство | Тип | Описание |
|---|---|---|
text |
NSString* |
Текст строки |
bbox |
POXBbox |
Ограничивающий прямоугольник |
wordCount |
NSInteger |
Число слов в строке |
- (nullable NSString*)cellTextAtRow:(NSInteger)row col:(NSInteger)col; // POXTable
POXTable
| Свойство / метод | Тип | Описание |
|---|---|---|
rowCount |
NSInteger |
Число строк |
colCount |
NSInteger |
Число столбцов |
hasHeader |
BOOL |
Есть ли в таблице строка заголовка |
cellTextAtRow:col: |
NSString* |
Текст ячейки в позиции (row, col) (nil, если индекс вне диапазона) |
POXFont
| Свойство | Тип | Описание |
|---|---|---|
name |
NSString* |
Имя шрифта |
type |
NSString* |
Тип шрифта (например, TrueType, Type1) |
encoding |
NSString* |
Кодировка шрифта |
embedded |
BOOL |
Встроен ли шрифт |
subset |
BOOL |
Является ли шрифт подмножеством |
size |
float |
Номинальный размер в точках (0, если неизвестен) |
POXImage
| Свойство | Тип | Описание |
|---|---|---|
width / height |
NSInteger |
Размеры в пикселях |
bitsPerComponent |
NSInteger |
Бит на цветовой компонент |
format |
NSString* |
Формат изображения |
colorspace |
NSString* |
Цветовое пространство |
data |
NSData* |
Закодированные байты изображения |
POXAnnotation
| Свойство | Тип | Описание |
|---|---|---|
type / subtype |
NSString* |
Тип и подтип аннотации |
content / author |
NSString* |
Содержимое и автор |
rect |
POXBbox |
Прямоугольник аннотации |
borderWidth |
float |
Толщина границы |
color |
uint32_t |
Цвет, упакованный как 0xAARRGGBB (0, если отсутствует) |
creationDate / modificationDate |
int64_t |
Секунды эпохи Unix (0, если отсутствует) |
hidden / markedDeleted / printable / readOnly |
BOOL |
Флаги |
linkUri |
NSString* |
Целевой URI для аннотаций Link (nullable) |
iconName |
NSString* |
Имя значка для аннотаций Text/note (nullable) |
quadPoints |
NSArray<NSArray<NSNumber*>*>* |
Точки четырёхугольника для аннотаций Highlight |
POXFormField
| Свойство | Тип | Описание |
|---|---|---|
name |
NSString* |
Имя поля |
value |
NSString* |
Текущее значение |
type |
NSString* |
Тип поля |
readonly |
BOOL |
Доступно ли поле только для чтения |
required |
BOOL |
Является ли поле обязательным |
POXPath
| Свойство | Тип | Описание |
|---|---|---|
bbox |
POXBbox |
Ограничивающий прямоугольник |
strokeWidth |
float |
Толщина обводки |
hasStroke / hasFill |
BOOL |
Имеет ли путь обводку / заливку |
operationCount |
NSInteger |
Число операций пути |
POXSearchResult
| Свойство | Тип | Описание |
|---|---|---|
text |
NSString* |
Найденный текст |
page |
NSInteger |
Индекс страницы с отсчётом от нуля |
bbox |
POXBbox |
Ограничивающий прямоугольник совпадения |
POXRenderedImage
| Свойство / метод | Тип | Описание |
|---|---|---|
width / height |
NSInteger |
Размеры в пикселях |
data |
NSData* |
Закодированные байты изображения (например, PNG) |
saveToPath:error: |
BOOL |
Записать отрендеренное изображение в файл |
close |
void |
Освободить нативный дескриптор |
Обработка ошибок
Операции, завершившиеся сбоем, возвращают nil / NO / отрицательный статус и заполняют выходной параметр NSError** ошибкой в домене POXErrorDomain:
NSError* error = nil;
POXDocument* doc = [POXDocument openPath:@"input.pdf" error:&error];
if (!doc) {
NSLog(@"Open failed: %@", error.localizedDescription);
return;
}
NSString* text = [doc extractText:0 error:&error];
if (!text) {
NSLog(@"Extraction failed: %@", error.localizedDescription);
}
[doc close];
Полный пример
#import <PdfOxide/POXPdfOxide.h>
NSError* error = nil;
// --- Extraction ---
POXDocument* doc = [POXDocument openPath:@"input.pdf" error:&error];
NSInteger pages = [doc pageCountError:&error];
for (NSInteger i = 0; i < pages; i++) {
NSString* md = [doc toMarkdown:i error:&error];
NSLog(@"Page %ld: %lu chars", (long)i, (unsigned long)md.length);
}
// Render page 0 to PNG
POXRenderedImage* img = [doc renderPage:0 format:0 error:&error];
[img saveToPath:@"page0.png" error:&error];
[doc close];
// --- Creation ---
POXDocumentBuilder* builder = [POXDocumentBuilder createWithError:&error];
[builder setTitle:@"Report" error:&error];
POXPageBuilder* page = [builder letterPageWithError:&error];
[page heading:1 text:@"Report" error:&error];
[page paragraph:@"Generated by PDF Oxide." error:&error];
[page done:&error];
[builder saveToPath:@"report.pdf" error:&error];
// --- Editing ---
POXDocumentEditor* editor = [POXDocumentEditor openEditor:@"document.pdf" error:&error];
[editor rotateAllPages:90 error:&error];
[editor setFormField:@"name" value:@"John Doe" error:&error];
[editor saveToPath:@"output.pdf" error:&error];
[editor close];
Other Language Bindings
PDF Oxide предоставляет нативные привязки для всех основных экосистем: Rust, Python, Node.js, WASM, C#, Golang, Java, PHP, Ruby, C++, Swift, Kotlin, Dart, R, Julia, Zig, Scala, Clojure, и Elixir.
Дальнейшие шаги
- Типы и перечисления — все общие типы и перечисления
- Справочник Page API — единообразная постраничная итерация для всех привязок
- Начало работы с Objective-C — учебное руководство