Objective-C API 레퍼런스
PDF Oxide는 C ABI 위에 구축된 관용적인 Objective-C 바인딩(PdfOxide 프레임워크 / PdfOxide CocoaPod)을 제공합니다. NSObject 래퍼는 네이티브 핸들을 소유하며 -dealloc(또는 즉시 해제하려면 -close)에서 해제합니다. 반환되는 C 문자열과 버퍼는 NSString/NSData로 복사되고, 성공이 아닌 상태 코드는 POXErrorDomain의 NSError로 표면화됩니다. 모든 공개 메서드는 POXApiCoverageTests로 1대1 커버리지가 보장됩니다.
# 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 레퍼런스를 참고하세요.
모든 페이지 인덱스는 0부터 시작합니다. 경계 상자는 PDF 사용자 공간 포인트 단위의 POXBbox { float x; float y; float width; float height; }를 사용하며, 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;
암호로 보호된 PDF를 한 번에 엽니다.
+ (nullable instancetype)openFromDocxBytes:(NSData*)data error:(NSError**)error;
+ (nullable instancetype)openFromPptxBytes:(NSData*)data error:(NSError**)error;
+ (nullable instancetype)openFromXlsxBytes:(NSData*)data error:(NSError**)error;
메모리 상의 Office 문서 바이트(Word/PowerPoint/Excel)를 변환해 열린 PDF 문서로 만듭니다.
- (BOOL)authenticate:(NSString*)password error:(NSError**)error;
이미 연 암호화 문서를 인증합니다. 성공 시 YES, 암호가 틀리면 NO를 반환합니다.
Office 내보내기
- (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;
POXVersion 구조체 형태의 PDF 버전입니다.
- (BOOL)isEncrypted;
- (BOOL)hasStructureTree;
- (BOOL)hasXfa;
암호화 여부, Tagged-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(span, 기하 정보, 글꼴)으로 추출합니다.
요소 추출
- (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 버퍼로 렌더링합니다. out 파라미터에 픽셀 크기가 채워집니다.
- (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에 연결된 페이지 핸들입니다(0부터 시작). 자신의 문서에 대한 강한 참조를 가지므로 문서보다 더 오래 살아남을 수 없습니다.
- (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;
Markdown, HTML, 또는 일반 텍스트에서 PDF를 생성합니다.
+ (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;
HTML + CSS와 단일 선택적 내장 글꼴로 PDF를 생성합니다.
+ (nullable instancetype)fromHtml:(NSString*)html css:(NSString*)css families:(NSArray<NSString*>*)families fonts:(NSArray<NSData*>*)fonts error:(NSError**)error;
HTML + CSS와 다중 글꼴 캐스케이드(병렬 families/fonts 배열)로 PDF를 생성합니다.
메서드
- (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 값을 담은 여러 사각형을 지우거나, 대기 중인 지우기 영역을 모두 제거합니다.
평탄화
- (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;
경로 또는 바이트로 저장하고(압축/GC/선형화 옵션 포함), AES 암호화하여 경로 또는 바이트로 저장하거나, 네이티브 핸들을 해제합니다.
POXDocumentBuilder
완전히 새로운 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 코드(오류 정정 레벨 지정)나 지정한 format의 1D/2D 바코드를 생성합니다.
- (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;
주체 / 발급자 / 일련번호, 유효 기간(유닉스 에포크 초), 현재 유효성(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;
DSS 내의 DER 인증서, CRL, OCSP 응답(및 VRI 개수)을 세고 읽습니다.
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;
POXPadesSignOptions 설정 객체를 사용해 원시 PDF 바이트에 서명합니다.
+ (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* |
TSA URL(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 |
유니코드 코드포인트 |
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 |
유닉스 에포크 초(없으면 0) |
hidden / markedDeleted / printable / readOnly |
BOOL |
플래그 |
linkUri |
NSString* |
Link 주석의 대상 URI(nullable) |
iconName |
NSString* |
Text/노트 주석의 아이콘 이름(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 |
0부터 시작하는 페이지 인덱스 |
bbox |
POXBbox |
일치 영역의 경계 상자 |
POXRenderedImage
| 프로퍼티 / 메서드 | 타입 | 설명 |
|---|---|---|
width / height |
NSInteger |
픽셀 크기 |
data |
NSData* |
인코딩된 이미지 바이트(예: PNG) |
saveToPath:error: |
BOOL |
렌더링된 이미지를 파일로 씁니다 |
close |
void |
네이티브 핸들을 해제합니다 |
오류 처리
실패한 연산은 nil / NO / 음수 상태를 반환하며 NSError** out 파라미터에 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 시작하기 — 튜토리얼