PDFium Delphi Component는 Delphi와 C++Builder 애플리케이션에 강력한 PDF 처리 및 보기 기능을 제공하는 종합적이고 전문가급 컴포넌트 라이브러리입니다. 페이지 렌더링과 문서 읽기에는 PDFium 렌더링 엔진을 사용하고, 그 엔진이 제공하지 않는 나머지 기능은 모두 Object Pascal로 직접 구현합니다
라이브러리를 평가할 때는 이 구분이 중요합니다. PDFium은 페이지를 그리고, 텍스트를 추출하고, 기존 구조를 읽을 수 있지만, 문서에 서명하거나 암호화를 기록하거나 PDF 표준을 검증하거나 선형화 또는 증분 리비전을 출력할 수는 없습니다. PDFium Delphi Component는 55개 유닛에 걸친 약 115,000줄의 Object Pascal을 제공하며, 그중 62,000줄 이상은 PDFium API에는 전혀 대응물이 없는 36개 유닛에 속합니다 — 암호학, 서명, 암호화, 표준 준수, PDF 직렬화, 폼 데이터 교환, 레이아웃, 텍스트 셰이핑이 그것입니다. 이 모든 것이 소스 코드로 제공됩니다
이 라이브러리는 세 가지 등록된 컴포넌트로 구성됩니다. 475개의 public 멤버를 가진 문서 처리 및 조작용 TPdf, 152개의 public 멤버를 가진 대화형 시각 표현용 TPdfView, 그리고 페이지 탐색용 TPdfThumbnailView입니다. 간단한 PDF 뷰어, 서명 문서 워크플로, 아카이브 변환 파이프라인, 완전한 문서 관리 시스템 중 무엇을 만들어야 하든 PDFium Delphi Component는 필요한 도구와 유연성을 제공합니다
다음 기능들은 PDFium C API에는 대응물이 없습니다. 각 기능은 PDFium Delphi Component가 Object Pascal로 구현했고, 공개된 ISO, ETSI, IETF 또는 FIPS 조항으로 검증되었으며, 소스 코드로 제공됩니다
단순한 서명 읽기가 아니라 완전한 서명 작성입니다. PDFium은 서명 사전이 존재한다고 보고할 수 있을 뿐이지만, PDFium Delphi Component는 서명 사전을 만들어냅니다
SignPades, SignPadesToStream, SignPadesBytes로 지원/Certs, /OCSPs, /CRLs를 갖춘 Document Security Store 주입, 서명별 VRI 사전, /Extensions /ESIC 마커/SubFilter /ETSI.RFC3161 Document Time-stamp 사전ICmsSigner 인터페이스 뒤에 위치PreparePadesRemoteSignature와 CompletePadesRemoteSignature가 작업을 분할하여 개인 키가 원격 서비스나 하드웨어 모듈 안에 머물 수 있도록 지원ValidatePades는 문서가 도달한 최상위 베이스라인과 조항 수준의 문제 코드를 보고하고, ValidatePadesTrust와 ValidatePadesTrustAsync는 인증서 체인 신뢰 검사를 추가합니다SignPadesWithPdfA는 EN 319 142-1 Annex A.7에 따라 한 번의 호출로 PDF/A-4 변환과 서명을 수행합니다PDFium은 암호화된 파일을 열 수는 있어도 암호화를 기록하지는 않습니다. PDFium Delphi Component는 ISO 32000-2와 그 기술 사양에 맞춰 기록 쪽을 구현합니다
/O /U /OE /UE /Perms 사전 항목을 갖춘 SaveAsEncrypted/Length 보정과 재구축된 교차 참조 테이블이 적용된 스트림 및 리터럴 문자열 암호화/AuthCode 토큰 — HKDF 키 유도, 키 래핑, HMAC 검증을 갖춘 CMS AuthenticatedData여섯 개의 ISO 표준 패밀리마다 조항 수준의 결과 코드를 반환하는 검증기와, 이에 대응하는 저장 또는 마커 주입 경로가 제공됩니다
엔진이 제공하는 것은 순차적인 전체 파일 저장 하나뿐입니다. 애플리케이션은 그 이상을 필요로 하는 경우가 많기 때문에, PDFium Delphi Component는 엔진의 의미 출력 위에 자체 리비전을 작성합니다
SaveAsLinearized는 첫 페이지 그룹화, 두 개의 교차 참조 섹션, Annex F 페이지 오프셋 및 공유 객체 힌트 테이블을 갖춘 Fast Web View 파일을 생성합니다SaveAsObjectStream은 페이지 로컬 순서와 완전한 type-2 교차 참조 커버리지로 대상 객체를 /ObjStm으로 묶습니다BeginIncrementalSave와 CommitIncrementalSave는 암호화 여부와 관계없이 소스에 변경·추가된 간접 객체만 덧붙이고, 이전 출력을 /Prev, /Encrypt, /Info, 영구 /ID와 함께 바이트 단위로 그대로 보존합니다. 변경이 없는 commit은 파일을 늘리지 않습니다SaveAsRepaired는 단일 리비전 복사본을 작성하고, 전달되기 전에 독립적인 strict 로드로 재검증합니다TPdf.PdfVersion은 PDFium 파서 상태를 재사용하고 소스 문서를 다시 파싱하는 대신 8바이트 헤더 가드만 수행합니다TPdfRandomAccessStore는 중간 데이터를 SaveMemoryLimit까지 메모리에 보관했다가 독점적인 delete-on-close 임시 파일로 옮깁니다. 핵심 저장 후처리는 세 작업 공간 모두에 같은 정책을 적용하고, 기본 open-action과 page-label Catalog 업데이트는 제한된 윈도우와 스파스 인덱스를 사용합니다/AF 배열, Table 45의 여덟 가지 relationship 값 지원IPdfOcrProvider는 어떤 인식 엔진이든 받아들입니다 — 컴포넌트가 페이지 비트맵을 공급하고 결과 검색 가능 텍스트 레이어를 기록하며, 페이지별 상태와 기존 텍스트 건너뛰기를 지원합니다GetStructuredText는 문자 기하와 Tagged PDF 의미론으로 페이지 / 블록 / 줄 / 스타일 스팬 계층을 만들고, ExtractTables와 ExtractDocumentTables는 테두리가 있거나 공백 정렬된 테이블을 탐지해 병합된 스팬을 보존하고, 신뢰도를 점수화하고, CSV나 JSON을 출력합니다BuildReflowDocument는 고정 레이아웃 PDF를 노드 트리로 바꾸며, 그 안전한 HTML 출력은 제목, 문단, 목록, 그림, 페이지 섹션, 테이블 스팬을 보존합니다MeasureText와 WrapText는 페이지에 아무것도 추가하지 않고 워드랩을 제공합니다TPdfStreamInspector는 명시적인 소스, 원시, 디코딩, 확장 비율, 스트림 수 예산 안에서 임의의 스트림 객체를 디코딩하고, 악의적으로 조작된 파일에서 메모리를 고갈시키는 대신 구조화된 상태를 반환합니다PDF 처리 시스템의 핵심인 TPdf는 로드, 저장, 텍스트 추출, 폼 처리, 메타데이터 관리를 포함한 모든 문서 수준 작업을 처리합니다
완전한 사용자 상호작용 기능으로 풍부한 PDF 보기 경험을 제공하는 정교한 시각적 컨트롤입니다
LoadCustomDocument를 통해 파일, 스트림, 메모리 버퍼 또는 온디맨드 TStream 어댑터에서 PDF 문서를 로드하며, compatible, strict, recovery 정책과 구조화된 xref 진단을 함께 제공SaveAsRepaired로 독립적으로 strict 검증되는 단일 리비전 복구 복사본 생성SaveAsPdfA / SaveAsPdfAToStream을 통한 PDF/A-1b 생성ValidatePdfA 및 읽기 전용 PdfAConformance 속성을 통한 PDF/A 검증MergeFiles(소스를 제한한 배치 병합), ImportPagesByIndex(부분 가져오기), ImportNPagesToOne(N-up 그리드), MovePages(제자리 재정렬)CreateXObjectFromPage 및 InsertFormObjectFromXObject를 통해 한 페이지를 여러 페이지에 스탬프RenderPageProgressive 및 IPdfCancellationToken을 통한 취소 가능한 점진적 렌더링TPdfProgressiveDocument를 통한 네이티브 점진적 다운로드 — 희소 바이트 범위 힌트, 우선순위가 적용된 범위 스케줄링, 제한된 재시도, 취소, 문서·폼·페이지 가용성 게이트 포함SaveAsLinearized를 통한 Fast Web View 출력 — 첫 페이지 그룹화, 두 개의 교차 참조 섹션, Annex F 페이지 오프셋 및 공유 객체 힌트 테이블 포함SaveAsObjectStream을 통한 최신 PDF 1.5+ 객체 패킹 — 제한된 ObjStm 그룹, 페이지 로컬 순서, 완전한 type-2 xref 커버리지 포함BeginIncrementalSave와 CommitIncrementalSave를 통한 변경 객체 리비전 세션 — 암호화 접두어 보존, 상속된 보안 매개변수, 변경 없는 commit, strict 재열기 검증, 내구성 있는 사이드 파일, 원자적 교체, 롤백, commit별 통계 포함TPdfRandomAccessStore와 SaveMemoryLimit을 통한 제한된 랜덤 액세스 작업 스토리지 — 안전한 임시 파일 스플, 위치 지정 I/O, 저장별 피크 진단 포함FitMode는 페이지가 뷰포트에 어떻게 배치되는지 선택합니다(수동 줌, 실제 크기, 페이지 맞춤, 너비 맞춤). 크기 조정 / 페이지 변경 시 자동으로 다시 적용됩니다PageColor는 렌더링된 PDF 페이지 배경을 주변 컨트롤의 Color와 분리하여 다크 모드 뷰어에 적합합니다HighlightSearchText 및 ClearHighlight를 통한 검색 결과 강조 표시PageShadowSize / PageShadowColor) 및 페이지 테두리(PageBorderColor)LinkOptions) 및 OnAnnotationLinkClick / OnWebLinkClick 이벤트가 포함된 안전한 링크 클릭 처리AllowUserPageChange, ChangePageOnMouseScrolling, AllowUserTextSelection)TPdfThumbnailView 사이드 패널 컴포넌트를 통한 썸네일 탐색| 항목 | 세부 사항 |
|---|---|
| 렌더링 엔진 | Google PDFium - 업계 표준, 검증된 PDF 엔진 |
| PDF 지원 | PDF 1.0부터 1.7까지의 버전, 암호화 및 암호 보호 파일 |
| 플랫폼 호환성 | Windows 32비트 및 64비트 애플리케이션 |
| IDE 지원 | Delphi XE5 / C++Builder XE5 (RAD Studio XE5)부터 Delphi/C++Builder 13.1 Florence (RAD Studio 13.1)까지, Lazarus 3.8+ |
| 문자 인코딩 | 전체 유니코드 지원, 다국어 텍스트 처리 |
| 메모리 관리 | 대용량 문서에 최적화, 효율적인 리소스 사용 |
| 스레드 안전성 | 단일 스레드 설계(PDFium 요구사항에 따름) |
PDFium Delphi Component는 관심사를 명확하게 분리하고 코드 재사용성을 극대화하는 계층화된 아키텍처 패턴을 따릅니다
| 계층 | 파일 | 책임 |
|---|---|---|
| VCL 컴포넌트 | PDFium.pas, FPdfThumbnail.pas | 디자인 타임 지원이 포함된 Delphi VCL 컴포넌트(TPdf, TPdfView, TPdfThumbnailView) |
| API 바인딩 | FPdfView.pas, FPdfDoc.pas, FPdfText.pas, FPdfEdit.pas, FPdfAnnot.pas, FPdfFormFill.pas, FPdfPageOps.pas, FPdfAttachment.pas, FPdfSignature.pas, FPdfStructTree.pas, FPdfDataAvail.pas, FPdfExtensions.pas, FPdfFWLEvent.pas, FPdfCompress.pas, FPdfUtils.pas | PDFium DLL 호출용 함수 포인터 선언 |
| PDF/A 파이프라인 | FPdfPdfa.pas | PDF/A-1b 생성(XMP 주입, sRGB ICC OutputIntent, Catalog 업데이트) 및 검증(준수 감지, 문제 열거) |
| 비동기 인프라 | FPdfAsync.pas | IPdfCancellationToken / IPdfCancellationTokenSource, PdfNoCancellationToken 싱글톤, 그리고 장기 실행 렌더링 및 내보내기 작업을 위한 TPdfFuture<T> 헬퍼 |
| 기하 헬퍼 | FPdfMatrix.pas | Translate, Scale, Rotate, Flip, Skew, Multiply 헬퍼를 갖춘 FS_MATRIX의 객체 지향 래퍼 |
| 페이지 작업 | FPdfPageOps.pas | FPDF_ImportPagesByIndex, FPDF_ImportPages, FPDF_ImportNPagesToOne, FPDF_MovePages용 래퍼, 확장 가능한 파일 기반 배치 스케줄링, 그리고 Form XObject 헬퍼(CreateXObjectFromPage / InsertFormObjectFromXObject) |
| 썸네일 사이드 패널 | FPdfThumbnail.pas | TPdfThumbnailView — 호버, 선택, OnPageClick 탐색이 포함된 스크롤 가능한 페이지별 썸네일 패널 |
| 네이티브 엔진 | DLLs\Win32|Win64\pdfium.dll 및 pdfium.v8.dll | Google PDFium 네이티브 렌더링 엔진, 선택적 V8 활성화 빌드 포함 |
TPdf 멤버와 36개의 즉시 실행 가능한 프로젝트가 개발 시간을 줄입니다PDFium Delphi Component는 즉각적인 생산성을 위해 설계되었습니다. 컴포넌트 라이브러리에는 다음이 포함됩니다
간단한 PDF 뷰어나 복잡한 문서 처리 시스템을 구축할 때, PDFium Delphi Component은 Delphi 및 C++Builder 애플리케이션에서 전문가급 PDF 기능을 위한 기반을 제공합니다