Delphi 및 C++Builder용 HotPDF 2.200.2

RAD Studio 애플리케이션을 위한 네이티브 PDF 생성, 편집, 서명, 표준 준수 출력, 글꼴 최적화 및 이미징

HotPDF는 외부 PDF 런타임을 배포하지 않고도 VCL 애플리케이션이 Delphi 또는 C++Builder 코드에서 직접 PDF 문서를 생성, 수정, 보호, 서명, 최적화, 가져오기, 압축 및 저장할 수 있도록 해줍니다

프로젝트 개요

HotPDF는 Delphi 및 C++Builder용 소스 수준 PDF 컴포넌트 라이브러리입니다 결정론적 PDF 출력, 직접 페이지 그리기, 강력한 RAD Studio 통합 및 컴팩트한 배포가 필요한 데스크톱 소프트웨어를 위해 제작되었습니다

이 컴포넌트는 단일 네이티브 API 인터페이스에서 일상적인 PDF 생성, 고급 문서 어셈블리, PDF 편집, 이미지가 많은 출력, 양식, 주석, 암호화, 서명 워크플로, 글꼴 최적화 및 스트림 기반 워크플로를 처리합니다

최근 라이브러리 릴리스에서는 HotPDF를 클래식 PDF 작성기에서 버전별 PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 기능 제어, 선택된 PDF 2.0 암호화, PDF/A-1 / -2 / -3 + PDF/X-1a / -3 / -4 + PDF/UA-1 표준 준수, PAdES 베이스라인 / 확장 / 장기 검증 디지털 서명, OpenSSL 또는 외부 네이티브 바이너리에 의존하지 않는 프로세스 내 PFX / PKCS#12 서명 파이프라인, 증분 업데이트 저장, CFF / OpenType / CID-keyed CFF 글꼴 서브셋팅, 기존 보고서를 단일 PDF 백엔드인 HotPDF를 통해 라우팅하는 FastReport, QuickReport, ReportBuilder 및 DevExpress ExpressPrinting용 PDF 내보내기 어댑터 등을 포함하는 광범위한 네이티브 PDF 툴킷으로 확장했습니다 Direct File API는 몇 기가바이트 크기이자 수백만 개의 객체를 가진 PDF를 파일 대 파일로 처리하여 페이지 수, 복사본, 문서 정보 재작성, AES-256 암호화 또는 복호화를 몇 초 만에 완료하며 로더는 이제 무효한 오프셋이 있는 전송 컨테이너에 래핑된 문서와 분리되거나 대체된 객체가 있는 증분 업데이트된 파일도 복구합니다

v2.119.32-51 주기에서는 생성자 측 아랍어 / 페르시아어 / 우르두어 셰이핑(LAM-ALEF 필수 합자, 아랍어 Presentation Forms-A 9자), Script / LangSys 선택 및 대체 글리프를 위한 TTF 서브세터 클로저가 포함된 모든 LookupType 1-8을 처리하는 기능이 완전한 OpenType GSUB 대체 엔진, XFA(XML Forms Architecture) 컨테이너 지원(AddXFAPacket / ClearXFAPackets / XFAPacketCount), AcroForm /AA /K + /F + /V + /C 양식 필드 트리거 제품군, RegisterAcroFormFont를 통한 다중 Unicode /DR 글꼴 등록, Table 333 표준 구조 유형 열거형 및 AddStructureElement 유형 오버로드가 포함된 구조 요소 접근성 속성 설정기(/Lang / /E / /T), BeginTaggedContent의 마크된 콘텐츠 시퀀스 속성이 추가되었습니다

v2.119.52-68 주기에서는 Phase 8 자동 셰이핑 파이프라인이 완성되고 스크립트 지원 범위가 확장되었습니다: 아랍어 Extended-A(U+0750-077F 아랍어 Supplement 및 U+08A0-08FF 아랍어 Extended-A 포함) 및 페르시아어 / 우르두어 Form-B가 전체 U+0672-06D5 결합 클래스 테이블과 26개의 새로운 Forms-A 매핑으로 확장되었으며 LAM-ALEF, YEH-HAMZA + 모음 쌍(U+FBEA-FBFB의 8개 합자), 독립형 Allah 합자(U+FDF2) 및 22개 코드포인트 Bismillah 구문(U+FDFD)에 대한 포스트 패스 폴딩이 지원됩니다 새로운 선택적 ShapingFeatures 속성 + THPDFShapingFeature 열거형(sfArabicGSUB / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping)을 통해 생성자는 GSUB 구동 글꼴 특정 rlig / liga / clig / rclt 대체를 자동으로 방출하며 라틴어 표준 합자(U+FB00-FB06을 통한 ff / fi / fl / ffi / ffl / št / st) 및 데바나가리 Indic 음절 재정렬(Repha + 프리베이스 I-matra)도 동일한 파이프라인에 포함됩니다 시리아어(GetSyriacJoiningClass / GetSyriacPosition), 몽골어(GetMongolianJoiningClass / GetMongolianPosition) 및 데바나가리(GetDevanagariCategory / ApplyDevanagariReorder)를 위한 새로운 셰이핑 기능 메서드를 사용하면 호출자가 동일한 GSUB 엔진을 통해 아랍어가 아닌 복잡한 스크립트를 구동할 수 있습니다 GetCodepointAdvance는 줄 바꿈 계산을 위해 캐시된 /W em-fraction을 노출하며 AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID를 사용하면 생성자가 /CIDToGIDMap + /ToUnicode + /W가 완전히 통합된 사용자 정의 영역(Private-Use-Area) 코드포인트를 통해 모든 GSUB 대체 GID(데바나가리 클러스터 모양, 스타일 대체, CJK 변이 시퀀스)를 방출할 수 있습니다 누적 ToUnicode CMap은 이제 35개의 합자 역매핑 항목(8개 LAM-ALEF + 18개 YEH-HAMZA 제품군 + 1개 Allah + 1개 Bismillah + 7개 라틴어)을 제공하므로 사용자 리더의 복사 / 붙여넣기가 소스 코드포인트를 생성합니다 ChangeLog용 문서 스켈레톤이 이제 언어 선택기 UI와 함께 11개 언어(EN / CN / AR / DE / ES / FR / IT / JA / KO / PT / RU)로 제공되며 ChangeLog 보존 제한이 250개에서 500개 버전 섹션으로 상향되었습니다

v2.152-v2.190 주기에서는 완전한 OpenType GPOS 포지셔닝 엔진을 구축하고 복잡한 스크립트 지원 범위를 확장했습니다 선택적 셰이핑 옵션은 이제 글꼴 자체의 커닝(쌍, 컨텍스트 및 우횡서), 결합 마크 배치(마크 투 베이스, 마크 투 마크 및 컴포넌트별 마크 투 합자), 필기체 연결 앵커 및 세로쓰기 텍스트용 세로 커닝을 적용하며 이 모든 것은 모든 리더가 동일한 결과를 렌더링하도록 표준 PDF 텍스트 연산자로 작성됩니다 생성자 측 셰이핑은 이제 아랍어(Supplement, Extended-A 및 Extended-B 블록 포함), 시리아어, 몽골어, N'Ko, 아들람, 하니피 로힝야어, 티베트어 자음 쌓기, 글꼴의 Indic 기능 체인을 통한 데바나가리 및 기타 Indic 스크립트, 자바어, 태국어 및 라오어 마크 순서 지정, 히브리어 모음 기호 순서 지정, 크메르어, 미얀마어, 타이 비엣어 및 메이테이 마예크어를 지원합니다 텍스트 출력 시 일련의 선택적 OpenType 타이포그래피 기능(표준, 임의 및 역사적 합자, 소문자, 올드스타일 / 라이닝 / 비례 / 표 형식 숫자, 위첨자, 아래첨자, 서수, 분수, 과학적 아래첨자, 분자, 분모, 스타일 및 컨텍스트 대체, 지역화된 형태, 대소문자 구분 형태, 슬래시 제로 및 세로 대체)을 자동으로 적용할 수 있습니다 복사, 붙여넣기 및 텍스트 검색은 합자 및 연결된 기능 대체를 포함하여 모든 셰이핑된 출력에서 원래 문자를 복원합니다 글꼴 출력도 작아졌습니다: 임베디드 글꼴 프로그램은 항상 Flate 압축되며 여러 페이지에 사용되는 글꼴은 문서당 한 번만 임베드되고 재현 가능한 출력을 위해 서브셋 태그가 결정론적으로 파생되며 선택적 컴팩트 모드는 표준 글꼴을 사용하는 일반 ASCII 텍스트를 임베드되지 않은 WinAnsi 텍스트로 작성합니다

PDF 표준 지원 범위

HotPDF는 비즈니스, 이미징, 출판 및 문서 자동화 애플리케이션에서 사용되는 실용적인 PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6 및 PDF 1.7 저작 기능에 대한 버전별 지원을 포함합니다 엄격한 호환성이 필요할 때 생성된 파일이 최신 항목을 피할 수 있도록 공개 API가 선택된 PDF 버전과 비교하여 체크됩니다

현재 지원 항목은 필터 및 예측기, XRef 스트림, 증분 업데이트 체인, AES 암호화, 공개 키 보안, DeviceCMYK 및 ICCBased 색상, 타일링 패턴, 축/방사형/다중 중지 음영, 인라인 이미지, 레이어, 투명도 그룹, 페이지 전환, 주석, AcroForm 위젯, 외부 서명 후크, XMP 메타데이터, 태그된 PDF 구조 트리, OutputIntents, 프로덕션 페이지 상자, ViewerPreferences, UserUnit, Tabs 순서 및 TrueType, Type 3, CFF, OpenType-CFF 및 CID-keyed CFF 글꼴의 글꼴 임베딩/서브셋팅을 포함합니다

이는 HotPDF가 지원하는 저작 인터페이스에 대한 광범위한 표준 인식 지원을 의미하며 ISO 32000-1의 모든 예외 사례가 구현되었음을 포괄적으로 주장하는 것은 아닙니다

HotPDF를 선택해야 하는 이유

네이티브 RAD Studio 최적합

별도의 PDF 엔진을 래핑하는 대신 친숙한 Delphi 및 C++Builder 프로젝트, 패키지, 스트림, 양식 및 그리기 패턴을 사용합니다

현대적인 PDF 기능

양식, 주석, 레이어, 투명도, 페이지 전환, 태그된 구조, 암호화, 서명 자리 표시자 및 증분 업데이트를 사용하여 PDF를 작성합니다

컴팩트하고 빠른 출력

zlib-ng 압축, libjpeg-turbo 이미징, TrueType 서브셋팅, OpenType-CFF 서브셋팅 및 대용량 CJK 글꼴용 CID-keyed CFF 지원을 통해 PDF 크기를 줄입니다

경쟁 우위

아래 기능들은 일반적인 Delphi PDF 컴포넌트 대비 HotPDF의 강력한 기술적 차별점입니다 대부분의 경쟁 상용 컴포넌트들은 이러한 기능이 아예 없거나 실제 프로덕션에서 실질적으로 취약합니다 각 행은 라이브러리 내부에서 검증 가능한 구현 및 공개 API 표면과 매핑됩니다

완전한 OpenType 셰이핑 + 포지셔닝

모든 LookupType 1-8(Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual)을 처리하는 전체 GSUB 대체 엔진과 모든 9가지 LookupType(쌍 / 단일 / 컨텍스트 커닝, 마크 투 베이스, 마크 투 마크, 합자 컴포넌트별 마크 투 합자, 필기체 부착, 거리, 세로 vkrn/vpal)을 처리하는 GPOS 포지셔닝 엔진이 짝을 이룹니다 모든 포지셔닝은 표준 PDF 텍스트 연산자로 방출되므로 모든 리더가 동일하게 렌더링합니다

생성자 측 복잡한 스크립트 셰이핑

글꼴 자체의 GSUB 기능 체인에 따라 생성자 측에서 20개 이상의 스크립트가 셰이핑됩니다: 아랍어(Supplement / Extended-A / Extended-B 포함), 시리아어, 몽골어, N'Ko, 아들람, 하니피 로힝야어, 티베트어 쌓기, 데바나가리 및 Indic 제품군, 자바어, 태국어 / 라오어 마크 순서 지정, 히브리어 모음 순서 지정, 크메르어, 미얀마어, 타이 비엣어, 메이테이 마예크어 출력이 완전한 /ToUnicode 역방향 매핑을 전달하므로 복사 / 붙여넣기가 원래 코드포인트를 복원합니다

프로세스 내 서명 스택, 외부 종속성 제로

ASN.1, RSA, AES, PKCS#12 언래핑 및 CMS SignedData(RFC 5652)가 모두 HotPDF 내부에 구현되어 있습니다 SignPDFWithPFX는 OpenSSL 런타임 및 플랫폼 암호화 공급자 없이 한 번의 호출로 자리 표시자 PDF에 서명합니다 - 전체 서명 체인이 프로세스 내에 상주하여 재현 및 감사가 가능하며 배포할 네이티브 바이너리가 전혀 없습니다

PAdES 장기 검증, 엔드 투 엔드

PAdES B-B, B-T, B-LT 및 B-LTA 워크플로가 완벽하게 지원됩니다: RFC 3161 타임스탬프, DSS / VRI 장기 검증 사전, 문서 타임스탬프 서명, Seed Value 제약 조건 및 XAdES-in-PDF 이는 대부분의 경쟁 컴포넌트가 기본 CMS 서명에 그치는 반면 EU eIDAS 준수 전자 서명을 위한 필수 요구 사항입니다

3축 적합성 + 프리플라이트

PDF/A-1/-2/-3, PDF/X-1a/-3/-4 및 PDF/UA-1에 대한 개별 프로필 제어를 동시에 처리하므로 비준수 호출 시 비적합 PDF를 자동으로 작성하는 대신 진단 예외를 발생시킵니다 CreatePreflightReport는 veraPDF에 대해 종단 간 검증된 INI 프로필, 내장 사전 설정, 배치 집계 및 XMP 입증 정보 임베딩이 포함된 텍스트 / JSON / HTML / CSV 보고서를 내보냅니다

멀티 기가바이트 Direct File API

메모리 내 객체 그래프를 빌드하지 않고 디스크의 PDF에서 작동합니다 167만 개의 객체가 포함된 2 GB 문서 기준: AES-256 암호화 약 14초, 복호화 약 16초, 전체 재작성 약 6초 소요되며 1.25 GB 문서의 페이지 수를 읽는 데는 몇 밀리초밖에 걸리지 않습니다 클래식 xref 테이블, XRef 스트림, 하이브리드 참조 파일 및 증분 업데이트된 문서는 모두 직접 경로에 유지됩니다

CFF / OpenType-CFF / CID 서브셋팅

TrueType, OpenType-CFF 및 CID-keyed CFF 글꼴은 모두 Type0 / Identity-H 텍스트의 글리프 ID를 유지하면서 서브셋팅이 가능합니다 기존에 14 MB CID-keyed CFF 프로그램을 임베드하던 CJK 문서는 이제 렌더링된 글리프 손실 없이 500 KB - 2 MB로 제공됩니다 임베디드 글꼴 프로그램은 항상 Flate 압축되고 다중 페이지 글꼴은 문서당 한 번만 임베드되며 재현 가능한 출력을 위해 서브셋 태그는 결정론적입니다

통합 런타임 로깅 퍼사드

THPDFLogger + 전역 HPDFLog는 런타임 시 전환 가능한 진단 퍼사드를 제공합니다: Error / Warning / Info / Debug 심각도 필터링, 파일 + OutputDebugString + 콘솔 대상 동시 출력, 스레드 안전, 10 MB 단일 백업 롤오버, 오버헤드가 없는 비활성화 고속 경로 LoadFromFile, 프리플라이트 보고서 및 객체 스트림 폴백 경로는 빌드를 다시 하지 않고도 런타임에 전환할 수 있는 구조화된 진단과 이미 연결되어 있습니다 - 이는 대부분의 경쟁 컴포넌트가 완전히 지원하지 않는 운영 기능입니다

4가지 보고서 엔진 어댑터

FastReport(TfrxHotPDFExport), QuickReport(TQRHotPDFExportFilter), ReportBuilder(TppHotPDFDevice) 및 DevExpress ExpressPrinting(cxGrid / cxRichEdit / cxScheduler / cxPivotGrid 포함)용 플러그 앤 플레이 PDF 백엔드 기존 보고서 레이아웃은 계속 작동하며 PDF 방출기만 교체됩니다

이것들은 로드맵 약속이 아니라 이미 제공되는 기능입니다 위의 모든 항목은 현재 라이브러리에 구현되어 있으며 깔끔하게 컴파일되고 DUnitX 테스트와 종단 간 veraPDF 검증을 통과합니다 경쟁 컴포넌트를 평가할 때 완전한 GSUB/GPOS LookupType 지원 범위, 프로세스 내 PAdES B-LTA 체인 및 측정된 멀티 기가바이트 암호화 처리량에 대한 증명을 요구하십시오

개발자 혜택

  • 소스 지향 통합을 통해 디버깅 및 배포를 직접 제어할 수 있습니다
  • 공유된 Delphi 및 C++Builder 예제를 통해 두 언어 스택 모두에서 동작을 더 쉽게 검증할 수 있습니다
  • 정적 타사 C 라이브러리 통합으로 압축 및 이미징 종속성을 재현 가능하게 유지합니다
  • 집중적인 도우미 API는 PDF 필터, FlateDecode, LZW, CCITT, 이미지 마스크, 바코드, 글꼴 서브셋팅 및 페이지 콘텐츠 워크플로를 처리합니다
  • PDF 버전 게이트는 출력을 자동으로 업그레이드하거나 StrictVersionLock을 통해 엄격한 PDF 1.3/1.4/1.5/1.6/1.7 준수를 시행할 수 있습니다
  • 바로 사용할 수 있는 Delphi 및 C++Builder 패키지 프로젝트는 13.1 Florence를 포함하여 현재 RAD Studio 세대를 지원합니다

최근 라이브러리 하이라이트

멀티 기가바이트 Direct File API

DAOpenFileReadOnly / DACopyFile / DASetDocumentInfo / DASaveAsFile 제품군 및 파일 대 파일 EncryptFile / DecryptFile 호출은 메모리 내 객체 그래프를 빌드하지 않고 PDF 파일에서 직접 작동합니다 167만 개의 객체가 포함된 2 GB 벤치마크 문서에서 AES-256 암호화는 약 14초, 복호화는 약 16초, 전체 재작성은 약 6초가 소요되며 페이지 수를 확인하기 위해 1.25 GB 문서를 여는 데는 몇 밀리초가 걸립니다 클래식 테이블, 교차 참조 스트림, 하이브리드 참조 파일 및 증분 업데이트된 문서는 모두 직접 경로에 유지됩니다

프리플라이트 보고서

CreatePreflightReportCreatePreflightReportWithProfile은 지원되는 PDF/A, PDF/X 및 PDF/UA 검사에 대해 PDF를 감사하고 텍스트, JSON, HTML 또는 CSV 보고서를 내보냅니다 허용된 결과를 억제하기 위해 INI 스타일의 프로필을 제공하므로 CI 게이트 및 배치 문서 수집에 적합합니다 PreflightCLI 데모는 재귀 폴더 실행 및 통합 대시보드를 추가합니다

로드된 문서 양식 툴킷

HasFormFieldsFormFieldExists는 로드된 PDF를 수정하기 전에 양식 관련 질문에 답변하며 필드 값은 인덱스 또는 이름으로 읽고 쓸 수 있으며 FlattenFormFields는 대화형 AcroForm 필드를 페이지 콘텐츠에 병합하고 플랫화된 필드 수를 보고합니다 - XFA 양식을 모든 리더에서 사용할 수 있게 유지하는 XFA-to-AcroForm 플랫화도 함께 지원됩니다

프로세스 내 PFX / PKCS#12 서명

THotPDF.SignPDFWithPFX(InputPDF, OutputPDF, PFXFile, Password)는 한 번의 호출로 기존 자리 표시자 PDF에 서명합니다 완전한 ASN.1, RSA, AES, PKCS#12 및 CMS SignedData(RFC 5652) 스택이 HotPDF 내부에 구현되어 있으므로 OpenSSL 런타임이나 플랫폼 암호화 공급자가 필요하지 않습니다

PAdES 장기 검증

PAdES B-B, B-T, B-LT 및 B-LTA 워크플로가 종단 간 지원됩니다: RFC 3161 타임스탬프를 사용한 서명 생성, DSS / VRI 장기 검증 사전, 문서 타임스탬프 서명 및 Seed Value 제약 조건 XAdES-in-PDF 및 서명 시드 값 제한도 동일한 인터페이스의 일부입니다

PDF/A, PDF/X 및 PDF/UA 적합성

HotPDF는 PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 및 PDF/UA-1 프로필과 비교하여 기능 메서드를 제한합니다 선택한 프로필을 위반하는 호출(PDF/A-1의 투명도, PDF/A의 JavaScript, PDF/X의 외부 주석, PDF/UA의 태그되지 않은 구조)은 비적합 PDF를 자동으로 생성하는 대신 진단 예외를 발생시킵니다

타사 보고서 엔진 어댑터

가장 일반적인 4가지 Delphi 보고서 엔진용 플러그 앤 플레이 PDF 백엔드: TfrxHotPDFExport(FastReport 4 / FastReport VCL), TQRHotPDFExportFilter(QuickReport), TppHotPDFDevice(ReportBuilder) 및 dxHotPDFExportReportLinkToFile/Stream(cxGrid / cxRichEdit / cxScheduler / cxPivotGrid를 포함하는 DevExpress ExpressPrinting System) 기존 보고서 정의는 보고서 레이아웃을 다시 작성하지 않고도 HotPDF를 통해 작동합니다

OpenType GPOS 포지셔닝 엔진

글꼴 자체의 GPOS 데이터로 구동되는 선택적 텍스트 포지셔닝: 좌횡서 및 우횡서 텍스트의 쌍 및 컨텍스트 커닝, 마크 투 베이스, 마크 투 마크 및 합자 컴포넌트별 마크 배치, 필기체 진입/진출 정렬, 거리 포지셔닝 및 세로 글꼴용 세로 커닝 포지셔닝은 표준 PDF 텍스트 연산자로 방출되므로 모든 PDF 리더가 동일한 결과를 렌더링합니다

복잡한 스크립트 셰이핑 지원 범위

생성자 측 셰이핑은 뷰어 측 셰이퍼에 의존하지 않고 아랍어(Supplement, Extended-A 및 Extended-B 블록 포함), 시리아어, 몽골어, N'Ko, 아들람, 하니피 로힝야어, 티베트어, 데바나가리 및 기타 Indic 스크립트, 자바어, 태국어, 라오어, 히브리어, 크메르어, 미얀마어, 타이 비엣어, 메이테이 마예크어에 대해 올바르게 결합되고 재정렬된 텍스트를 렌더링합니다 각 스크립트는 선택적 스위치이므로 활성화될 때까지 기존 출력은 바이트 단위로 동일하게 유지되며 복사/붙여넣기는 원래 문자를 복원합니다

자동 OpenType 타이포그래피 기능

선택적 셰이핑 스위치는 텍스트 출력 시 글꼴의 표준, 임의 및 역사적 합자, 소문자, 올드스타일 / 라이닝 / 비례 / 표 형식 숫자, 위첨자, 아래첨자, 서수, 분수, 과학적 아래첨자, 분자, 분모, 스타일 및 컨텍스트 대체, 지역화된 형태, 대소문자 구분 형태, 슬래시 제로 및 세로 대체를 자동으로 적용하며 텍스트 추출은 원래 문자로 다시 매핑됩니다

컴팩트한 글꼴 출력

임베디드 글꼴 프로그램은 항상 Flate 압축되며 여러 페이지에 사용되는 글꼴은 문서 전체에 한 번만 임베드되고 실제로 사용된 글리프에서 서브셋 태그가 결정론적으로 파생되므로 반복 실행 시 동일한 출력을 얻을 수 있습니다 선택적 모드는 표준 글꼴을 사용하는 일반 ASCII 텍스트를 컴팩트하고 임베드되지 않은 WinAnsi 텍스트로 작성하여 일반 텍스트 페이지를 수백 킬로바이트에서 몇 킬로바이트로 줄입니다

다중 스크립트 생성자 셰이핑

생성자 측 셰이핑은 PDF 텍스트 방출 전에 Unicode 입력 런을 Presentation Forms로 정리합니다 아랍어는 전체 U+0672-06D5 결합 클래스 테이블과 40개 이상의 Forms-A 매핑을 지원하며 LAM-ALEF, YEH-HAMZA + 모음(U+FBEA-FBFB), Allah(U+FDF2) 및 Bismillah(U+FDFD)에 대한 자동 합자 포스트 패스를 제공합니다 시리아어(GetSyriacJoiningClass), 몽골어(GetMongolianJoiningClass) 및 데바나가리(GetDevanagariCategory / ApplyDevanagariReorder)를 위한 기능 인터페이스를 통해 호출자가 동일한 GSUB 엔진을 통해 아랍어가 아닌 복잡한 스크립트를 구동할 수 있습니다

자동 셰이핑 파이프라인 (Phase 8)

선택적 ShapingFeatures 속성 + THPDFShapingFeature enum (sfArabicGSUB / sfCursiveAttachment / sfStandardLigatures / sfContextualLigatures / sfContextualAlternates / sfIndicShaping)은 OpenType GSUB 및 GPOS 엔진을 자동 생성자 측 파이프라인으로 승격시킵니다 텍스트가 방출됨에 따라 네이티브 아랍어 init / medi / fina / isol, rlig, calt, rclt, GPOS 필기체 부착, 라틴어 liga / clig 및 데바나가리 Indic 재정렬이 발생하며 복사 / 붙여넣기 정확성을 위한 완전한 /ToUnicode 역매핑이 지원됩니다

라틴어 표준 합자 + PUA 합성 코드포인트

sfStandardLigatures가 활성화되면 ApplyLatinLigatureRefinement를 통해 라틴어 표준 합자(U+FB00-FB06을 통한 ff / fi / fl / ffi / ffl / št / st)가 자동으로 방출됩니다 자연스러운 Unicode 코드포인트가 없는 GSUB 대체 GID(데바나가리 클러스터 모양, 스타일 대체, CJK 표의 문자 변이 시퀀스)의 경우 AssignSyntheticCodepointForGID는 대칭적인 /CIDToGIDMap + /W + /ToUnicode 통합이 포함된 사용자 정의 영역(U+E000-F8FF Private-Use-Area) 코드포인트를 할당합니다

OpenType GSUB 대체 엔진

모든 OpenType GSUB LookupType 1-8(Single, Multiple, Alternate, Ligature, Contextual, Chained Contextual, Extension, Reverse Chained Contextual)은 기능 전용 쿼리 인터페이스(GetSingleSubstituteGlyph, ApplyLigatureSubstitution, ApplyContextualSubst, ApplyReverseChainedContextualSubst 및 Multiple / Alternate / Script / LangSys / Feature 도우미)로 구현됩니다 MarkUnicodeGlyphUsed는 모든 대체 글리프를 TTF 서브세터로 가져와 임베디드 글꼴 서브셋이 자립성을 유지하도록 합니다

XFA 양식 + AcroForm 트리거 + Unicode /DR

PDF 1.7 §12.7.6 / §12.7.8 XFA 컨테이너 패킷은 AddXFAPacket을 통해 정적 /Fields와 함께(또는 대신) 전송됩니다 전체 AcroForm 양식 필드 트리거 제품군(/AA /K Keystroke, /F Format, /V Validate, /C Calculate)이 래퍼 메서드로 노출되며 RegisterAcroFormFont는 다국어 양식 위젯을 위해 여러 Unicode 글꼴을 단일 AcroForm /DR 리소스 사전에 바인딩합니다

글꼴 서브셋팅 및 CJK PDF

THotPDF.EnableFontSubsetting은 Type0 / Identity-H 텍스트의 글리프 ID를 유지하면서 TrueType, OpenType-CFF 및 CID-keyed CFF 글꼴을 서브셋팅합니다 기존에 14 MB CID-keyed CFF 프로그램을 임베드하던 CJK PDF는 이제 렌더링된 글리프의 손실 없이 500 KB - 2 MB로 배포됩니다

다중 서명 증분 저장

BeginIncrementalUpdate, SaveIncrementalUpdate, MarkDirty 및 서명 자리 표시자 API는 이전 서명된 바이트 범위를 재작성하지 않고도 추가 전용 PDF 업데이트 및 다중 서명 워크플로를 지원합니다

고급 PDF 기능 지원 범위

  • Catalog, ViewerPreferences, 주석, JavaScript, Type0 글꼴, ToUnicode 맵, 투명도, 레이어 및 암호화에 대한 버전별 PDF 1.3 / 1.4 / 1.5 / 1.6 / 1.7 + 선택된 PDF 2.0 API 제한을 지원합니다
  • 프로필을 자동으로 위반하는 대신 규정을 준수하지 않는 기능 호출을 거부하는 PDF/A-1 / -2 / -3, PDF/X-1a / -3 / -4 및 PDF/UA-1 적합성 게이트를 포함합니다
  • 역할 맵, StructParents, ParentTree 출력 및 접근성 지향 워크플로를 위한 구조 요소를 갖춘 태그된 PDF 구조 트리를 제공합니다
  • OutputIntents, ICC 프로필, 페이지 상자, 회전, UserUnit, Tabs 순서, 타일링 패턴, ExtGState 알파, 혼합 모드, 하프톤(Type 1 / 5 / 6 / 10 / 16), 전송 함수 및 검정 생성 / 색상 미만 제거 Function 참조를 지원합니다
  • 인라인 이미지, 다중 중지 축 그라디언트, 방사형 그라디언트, 자유 형태 / 격자 형태 Gouraud 음영 삼각형 메시, Coons 패치 및 텐서 곱 패치 메시, PNG 스타일 픽셀당 알파용 소프트 마스크 이미지 및 재사용 가능한 패턴 채우기를 제공합니다
  • 명명된 대상, 페이지 축소판, 페이지 수준 아웃라인 스타일(색상, 굵게, 기울임꼴), 문서 수준 명명된 JavaScript 레지스트리 및 전체 Line / PolyLine / Polygon 추가 제품군(캡션, 선 끝, 인텐트, 테두리 효과)을 지원합니다
  • 생성자 측 아랍어 셰이핑은 전체 U+0672-06D5 결합 클래스 테이블과 40개 이상의 정적 아랍어 Presentation Forms-A 매핑을 지원하며 LAM-ALEF, YEH-HAMZA + 모음 쌍(U+FBEA-FBFB), Allah 합자(U+FDF2) 및 Bismillah 구문(U+FDFD)에 대한 포스트 패스 합자 폴딩을 제공합니다
  • 다중 스크립트 셰이핑 기능 인터페이스: 시리아어(GetSyriacJoiningClass / GetSyriacPosition), 몽골어(GetMongolianJoiningClass / GetMongolianPosition), 데바나가리(GetDevanagariCategory / ApplyDevanagariReorder) - 아랍어가 아닌 복잡한 스크립트에 대해서도 동일한 GSUB 엔진을 구동합니다
  • ShapingFeatures 선택적 속성으로 구동되는 자동 Phase 8 셰이핑 파이프라인: sfArabicGSUB는 글꼴 특정 컨텍스트 글리프 ID를 방출하기 위해 네이티브 아랍어 init / medi / fina / isolrlig / calt / rclt를 적용하며, sfCursiveAttachment는 GPOS 필기체 앵커를 적용하고, sfStandardLigatures / sfContextualLigatures는 라틴어 liga / clig(FB00-FB06: ff / fi / fl / ffi / ffl / št / st)를 방출하고, sfIndicShaping은 방출 전에 데바나가리 클러스터(Repha + 프리베이스 I-matra)를 재정렬합니다
  • Script / LangSys 선택, TTF 서브세터 클로저(MarkUnicodeGlyphUsed), Cmap 형식 12 SMP 지원, GDEF 파싱, 35개 합자 역매핑 항목이 있는 ToUnicode CMap 자동 방출 및 호출자가 글리프별로 방출을 구동하기 위한 GetUnicodeGlyphForCodepoint 조회를 포함하는 기능이 완전한 OpenType GSUB 대체 엔진(LookupType 1-8)을 제공합니다
  • PUA 합성 코드포인트 방출(AssignSyntheticCodepointForGID / GetSyntheticCodepointForGID)을 통해 생성자는 대칭형 /CIDToGIDMap + /W 통합과 함께 U+E000-F8FF 사용자 정의 영역(Private Use Area)을 통해 모든 GSUB 대체 GID(데바나가리 클러스터 모양, 스타일 대체, CJK 표의 문자 변이 시퀀스)를 방출할 수 있습니다 GetCodepointAdvance는 줄 바꿈 계산을 위해 캐시된 /W em-fraction을 노출합니다
  • 선택적 셰이핑 스위치로 구동되는 OpenType GPOS 포지셔닝 엔진: 좌횡서 및 우횡서 텍스트의 쌍, 단일 및 컨텍스트(컨텍스트 / 연결된 컨텍스트) 커닝, 합자의 컴포넌트별 정확도를 보장하는 마크 투 베이스 / 마크 투 마크 / 마크 투 합자 배치, 필기체 진입-진출 부착, 거리 포지셔닝 및 세로 텍스트 출력에 적용되는 vkrn / vpal 세로 커닝을 지원합니다
  • 아랍어 Supplement / Extended-A / Extended-B, 시리아어, 몽골어, N'Ko, 아들람, 하니피 로힝야어, 티베트어 쌓기, 글꼴의 Indic 기능 체인을 통한 Indic 스크립트 제품군, 자바어, 태국어 / 라오어 마크 순서 지정, 히브리어 모음 기호 순서 지정, 크메르어, 미얀마어, 타이 비엣어, 메이테이 마예크어에 대한 생성자 측 복잡한 스크립트 셰이핑을 개별 선택적 스위치와 복사 / 붙여넣기를 위한 ToUnicode 역방향 매핑을 포함하여 지원합니다
  • 텍스트 출력 시 자동 OpenType 타이포그래피 기능: liga / clig / dlig / hlig 합자, smcp / c2sc 소문자, onum / lnum / pnum / tnum 숫자 스타일, sups / subs / ordn / frac / sinf / numr / dnom, salt 스타일 대체, calt / rclt 컨텍스트 대체, locl 지역화된 형태, case 형태, zero 슬래시 제로 및 vert / vrt2 세로 대체(ToUnicode CMap에서 원래 텍스트로 역해결되는 연결된 대체 포함)를 자동으로 처리합니다
  • 글꼴 임베딩 최적화: 항상 압축되는 임베디드 글꼴 프로그램, 여러 페이지에 사용되는 글꼴에 대해 문서당 하나의 임베디드 복사본, 재현 가능한 출력을 위해 결정론적인 서브셋 태그 및 표준 글꼴을 사용하는 일반 ASCII 텍스트를 위한 선택적 임베드되지 않은 WinAnsi 모드를 지원합니다
  • AcroForm 텍스트 필드, 목록 상자, 콤보 상자, 확인란, 라디오 버튼, 푸시 버튼 동작(사용자가 제어하는 /Flags를 사용하는 확장된 Named / Hide / Show / ImportData / SubmitForm 포함), 서명 필드 및 생성된 모양 스트림(다중 라인 + comb + 서식 있는 텍스트 Tx + CID 글꼴 /AP)을 제공합니다
  • 트리거당 하나의 래퍼 메서드가 있는 AcroForm 양식 필드 트리거 제품군(/AA /K Keystroke, /F Format, /V Validate, /C Calculate), RegisterAcroFormFont를 통한 다중 Unicode /DR 글꼴 등록, AddXFAPacket / ClearXFAPackets / XFAPacketCount 및 PDF/A + PDF/X 적합성 게이트를 포함하는 XFA(XML Forms Architecture) 컨테이너 지원(PDF 1.7 §12.7.6 / §12.7.8), 정적 XFA를 네이티브 AcroForm 필드, 스타일 및 페이지 그래픽으로 변환하는 XFA-to-AcroForm 플랫화(원시 XDP 바이트를 위한 ApplyXFAAsAcroForm, 로드된 PDF의 임베디드 양식을 위한 FlattenLoadedXFA)를 제공하여 XFA 엔진이 없는 리더에서도 양식을 보고 채울 수 있도록 합니다
  • PDF/UA-1 태그된 PDF 접근성 영역: BeginTaggedContent의 §14.8.4 마크된 콘텐츠 시퀀스 속성(/Lang / /Alt / /ActualText / /E), 구조 요소 속성 설정기(/Lang / /E / /T), Table 333 표준 구조 유형 열거형(THPDFStandardStructureType) 및 AddStructureElement 유형 오버로드를 제공합니다
  • 강조 표시, 자유 텍스트, 링크, 파일 첨부, 팝업, 수정, 워터마크, 서식 있는 미디어, 3D / U3D / PRC, 테두리 스타일 및 연결된 주석 팝업에 대한 주석 지원을 포함합니다
  • 표준 비밀번호 보안, AES-128 / AES-256 보안 핸들러, PDF 2.0 R6 해싱, 호출자가 제공한 PKCS#7 봉투를 통한 인증서 수신자 공개 키 암호화 및 비 ASCII 색상/글꼴 이름에 대한 바이너리 안전 처리를 제공합니다
  • RFC 3161 타임스탬프가 포함된 PAdES B-B, B-T, B-LT 및 B-LTA 디지털 서명, DSS / VRI 장기 검증 사전, 문서 타임스탬프 서명, Seed Value 제약 조건 및 XAdES-in-PDF를 지원합니다
  • 프로세스 내 PFX / PKCS#12 서명: 라이브러리에 번들된 ASN.1, RSA, AES, PKCS#12 및 CMS SignedData 스택은 OpenSSL이나 플랫폼 암호화 종속성 없이 한 번의 호출로 기존 자리 표시자 PDF에 서명합니다
  • FastReport 4 / FastReport VCL, QuickReport, ReportBuilder 및 DevExpress ExpressPrinting System용 플러그 앤 플레이 PDF 백엔드를 지원하여 보고서 레이아웃을 다시 작성하지 않고도 기존 보고서 정의가 HotPDF를 통해 방출되도록 합니다

고성능 압축 및 이미징 스택

현재 HotPDF 빌드는 번들 플러그인 Flate 백엔드를 위해 zlib 호환 모드에서 zlib-ng를 사용합니다 페이지 스트림, 임베디드 글꼴 스트림, ToUnicode CMaps, Flate 이미지 스트림, TIFF 관련 출력 및 FlateDecode 도우미가 HotPDF zlib 레이어를 통해 라우팅됩니다

Win64x 및 진단용 MSVC Win64 zlib-ng 빌드는 일반 폴백을 유지하면서 SSE2, SSSE3, SSE4.1, SSE4.2, PCLMULQDQ 및 AVX2 경로에 대한 런타임 CPU 디스패치를 포함합니다 Win32는 bcc32c를 통한 일반 zlib-ng OMF 객체 세트에 유지되며 Win32 JPEG 및 TIFF 객체는 클래식 bcc32 OMF 경로를 계속 사용합니다

표준 JPEG 워크플로는 HPDFJpeg.pas가 노출하는 libjpeg 호환 API를 통해 번들된 libjpeg-turbo 3.1.90 객체 세트를 사용합니다 Win32, Win64 및 Win64x 네이티브 빌드에는 이제 관련 NASM SIMD 객체 세트가 포함되어 있으며 JPEG 압축 TIFF 처리를 위해 동일한 네이티브 JPEG 백엔드를 TIFF 통합 레이어에서 사용할 수 있습니다

HPDFCLibs.pas의 C 런타임 브릿지는 이제 SIMD 친화적인 네이티브 버퍼를 위한 32바이트 정렬 할당과 함께 단일 Pascal 지향 레이어를 통해 malloc, free, realloc, calloc, memcpy, memmove 및 memset을 해제합니다

저장소에는 전체 네이티브 C 라이브러리 세트를 위한 재현 가능한 객체 빌드 스크립트 Lib\thirdparty\build-bcc32.bat, Lib\thirdparty\build-bcc64x.batLib\thirdparty\build-vc64.bat와 집중적인 압축 재빌드를 위한 zlib-ng 전용 스크립트가 포함되어 있습니다

빠른 Delphi 예제

program HelloHotPDF;

uses
  System.SysUtils,
  HPDFDoc;

var
  PDF: THotPDF;
begin
  PDF := THotPDF.Create(nil);
  try
    PDF.AutoLaunch := False;
    PDF.FileName := 'HelloHotPDF.pdf';
    PDF.Compression := cmFlateDecode;
    PDF.EnableFontSubsetting := True;
    PDF.BeginDoc;
    PDF.CurrentPage.SetFont('Arial', [], 18);
    PDF.CurrentPage.TextOut(50, 50, 0, 'Hello HotPDF');
    PDF.EndDoc;
  finally
    PDF.Free;
  end;
end.

패키지 구성품

일반적인 사용 사례