Native Linux and macOS
네이티브 FPC 백엔드는 Linux x64와 macOS ARM64에서 헤드리스 라이브러리 워크플로를 지원하며 실제 ELF와 Mach-O 프로그램을 만듭니다
PDF 생성, 저장/읽기, 텍스트 추출과 편집, 구조화 추출, 이식 가능한 OCR 콜백, 비트맵 렌더링, 메타데이터, 암호화, 네트워크 range 접근, 네이티브 PFX 서명에는 기존 TPDFlib API를 사용합니다
런타임 의존 항목
| 공급자 | 라이브러리 | 용도 |
|---|---|---|
| OpenSSL 3 | libcrypto | AES CBC/GCM, 다이제스트, PKCS12 아이덴티티, CMS 서명, 무결성, 명시적인 신뢰 앵커 체인 |
| libcurl | 비동기 DNS를 갖춘 libcurl | HTTP/HTTPS, 제한된 바이너리 전송, range 접근, RFC 3161 요청 |
| Cairo | libcairo | 비트맵 이미지 서피스, 패스, 클리핑, 글리프 외곽선, 이미지 |
| Fontconfig | libfontconfig | 명시적인 패밀리 대체를 포함한 실제 네이티브 글꼴 파일 매칭 |
| OpenJPEG 2 | libopenjp2 | JPEG 2000 디코딩과 인코딩 |
Linux는 해당 시스템 SONAME을 읽어 들이고, macOS는 /opt/homebrew 아래의 ARM64 라이브러리와 시스템 libcurl을 사용합니다
없는 라이브러리나 심볼, 지원되지 않는 연산은 명시적으로 실패하며 Windows 디바이스 컨텍스트 대체물을 쓰지 않습니다
서명과 타임스탬프
기본 PFX 공급자는 실제 RSA와 EC 아이덴티티, 분리형 CMS, CAdES, 구형 첨부형 SHA1 프로필을 지원합니다. 검증은 PDF ByteRange 바이트와 CMS 서명을 확인합니다
인증서 체인 검증에는 명시적인 신뢰 앵커가 필요합니다. 내장된 인증서가 신뢰를 부여하지 않고 무결성만으로 신뢰를 뜻하지 않습니다
ApplyPAdESSignatureTimeStamp는 구성된 기본 네이티브 HTTP 전송으로 실제 RFC 3161 토큰을 가져와 붙입니다. 원본 서명 앞에 충분한 /Contents 용량을 확보하십시오
타임스탬프 검증은 서명된 토큰, 메시지 임프린트, 배타적인 필수 timeStamping EKU, TSA 이름, 선택적 기대 policy/nonce, 토큰 생성 시점의 신뢰할 수 있는 인증서 체인을 확인합니다
문서 타임스탬프는 실제 PDF ByteRange 임프린트도 검증합니다. 호출자는 기존 DocTimeStamp 패스스루 워크플로를 쓰고 토큰을 직접 제공할 수 있습니다
메타데이터와 렌더링
XMP는 실제 네임스페이스 인식 DOM을 사용하며 편집 중에 관련 없는 속성을 유지합니다
DTD 선언은 소스 인코딩과 무관하게 XML 리더가 거부합니다. 입력과 디코딩된 문자에는 한도가 있고 DOM 구성 전에 스트리밍 패스가 깊이와 노드 이벤트를 제한합니다
렌더링은 실제 네이티브 비트맵 저장소와 Cairo 이미지 서피스를 사용합니다. 밴드 렌더링은 디바이스 공간 좌표를 유지하고 가드 행으로 경계 안티앨리어싱을 일관되게 지킵니다
네이티브 패밀리 글꼴 임베딩은 실제 Fontconfig 파일을 찾아 CIDFontType2, Identity CIDToGIDMap, 초기화된 메트릭, Unicode 폭을 갖춘 완전한 독립형 TrueType 프로그램을 포함합니다. BMP 텍스트와 이식 가능한 OCR 레이어는 PDF 저장/다시 읽기 후에도 살아 남습니다
이 진입점은 임베드되지 않은 패밀리 글꼴, 컬렉션, CFF 프로그램, 비트맵 전용 임베딩 권한을 거부합니다. 제한된 임베딩에는 기존 명시적 권한 재정의가 필요하고 서브셋을 금지하는 글꼴은 완전한 프로그램으로 남습니다
한도
- Windows 디바이스 컨텍스트, EMF, GUI, 클립보드, 인쇄는 네이티브 헤드리스 백엔드의 범위 밖입니다
- 복잡한 네이티브 텍스트 셰이핑과 Windows 시스템 인증서 저장소 아이덴티티는 사용할 수 없습니다
- 독립형 TrueType 임베딩 진입점은 현재 BMP 텍스트를 지원합니다. 보충 평면 텍스트, TTC 페이스 추출, CFF 임베딩은 이 진입점의 범위 밖입니다
- 온라인 OCSP/CRL 폐기 확인은 사용할 수 없습니다. 폐기 검증 요청은 알 수 없는 결과를 보고합니다
- 기본 네이티브 PFX 공급자는 RSA-PSS와 추가 policy, commitment, 폐기 서명 속성을 거부합니다
- 네이티브 CMYK/ICC 변환과 인덱스 1비트 BMP 쓰기는 사용할 수 없습니다
- HTTP가 DNS 조회 타임아웃을 지키려면 libcurl의 비동기 DNS 지원이 필요합니다
빌드와 검증
python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests
명시적인 컴파일러 구성에는 --config /path/to/fpc.cfg를 넘기십시오. 러너는 전역 컴파일러 설정을 바꾸지 않고 -FcUTF8을 추가하지도 않습니다
이 스위트는 실제 네이티브 실행 파일 형식을 검사하고 컴파일러/의존 항목 버전, 소스 해시, 실행 파일 해시, 결과, 한도를 담은 JSON 보고서를 씁니다
체크인된 Tests/Native 픽스처는 PDF 저장/다시 읽기/렌더링, 텍스트 워크플로, 암호화, 메타데이터, 서명, 실제 HTTP/TSA 트래픽, 부정 보안 사례를 다룹니다