PDFium Delphi Component Docs

PAdES 서명 · PDF 2.0 암호화 · 6가지 ISO 표준 · Delphi / C++Builder / Lazarus

렌더링 엔진이 해내지 못하는 모든 것, Object Pascal로 작성되었습니다

엔진은 페이지를 그리고 구조를 읽을 뿐입니다. 문서에 서명하거나, 암호화를 기록하거나, PDF 표준을 검증하거나, 선형화·증분 개정판을 출력할 수는 없습니다. PDFium Delphi Component는 그 모든 것을 PDFium 위에 구현합니다. 엔진 API에는 없는 36개 유닛 62,000줄이 넘는 코드와 뷰어·접근성 리더 아키텍처가 더해지며, 모든 코드가 소스로 제공됩니다

전체 개요 읽기 기능 카탈로그 살펴보기

엔진 위에서 얻게 되는 것

아래의 모든 항목은 API 참조와 데모에서 직접 확인할 수 있는 실제 제공 기능입니다

서명 읽기가 아닌 디지털 서명

엔진은 서명 사전이 존재한다고 보고만 할 수 있습니다. 이 라이브러리는 직접 만들어냅니다. ETSI EN 319 142-1의 PAdES baseline B-B, B-T, B-LT, B-LTA, RFC 5652 CMS / CAdES SignedData, RFC 3161 타임스탬프 요청, Document Security Store 주입, 아카이브 타임스탬프, 인증서 체인 신뢰 검증이 그렇습니다. 원격 및 HSM 서명은 작업을 분리하므로 개인 키가 워크스테이션에 도달할 필요 자체가 없습니다

SignPades / ValidatePadesTrust / PreparePadesRemoteSignature

열기만 하는 것이 아닌, 직접 기록하는 암호화

알고리즘 2.B의 R6 키 도출을 갖춘 ISO 32000-2 AES-256, 스트림·문자열 암호화 전체 스윕, ISO/TS 32003 AES-GCM, ISO/TS 32004 PDF MAC 토큰을 지원합니다. AES, SHA-2, SHA-3, HMAC, ASN.1 프리미티브는 순수 Object Pascal로 작성되어 공개된 FIPS 테스트 벡터로 검증되었으므로, 외부 C 라이브러리가 배포 환경이나 보안 검토에 들어올 일이 없습니다

SaveAsEncrypted; FPdfAes / FPdfSha512 / FPdfAsn1

엔진에는 없는 PDF 라이터

엔진이 제공하는 것은 순차적인 파일 전체 저장 하나뿐입니다. 이 라이브러리는 그 위에 자체 개정판을 기록합니다. Annex F 힌트 테이블을 갖춘 선형화 Fast Web View, 객체 스트림·xref 스트림 패킹, 이전 출력을 바이트 단위로 그대로 보존하는 dirty-object 증분 개정이 여기에 해당합니다. 손상된 파일에는 조용한 복구 대신 엄격·호환·복구 로드 정책과 구조화된 진단을 제공합니다

SaveAsLinearized / SaveAsObjectStream / BeginIncrementalSave / SaveAsRepaired

일반 텍스트를 넘어서는 콘텐츠 추출

GetStructuredText는 문자 지오메트리와 Tagged PDF 의미 구조로부터 페이지 / 블록 / 줄 / 스타일 스팬 계층을 만듭니다. ExtractTables는 테두리 있음·공백 정렬 테이블을 탐지하고 병합된 스팬을 보존하며 CSV나 JSON을 출력합니다. BuildReflowDocument는 고정 레이아웃 PDF를 의미론적 HTML로 바꿉니다. XFDF와 FDF는 양식 데이터와 18가지 주석 하위 유형을 주고받는데, 이는 엔진이 API조차 노출하지 않는 형식입니다

ExtractTables / BuildReflowDocument / ExportXFDF

동급 중 가장 넓은 IDE 커버리지

Delphi / C++Builder (RAD Studio XE5~13.1 Florence)와 Lazarus / Free Pascal 3.8 이상, Win32 및 Win64를 지원합니다. 세 가지 IDE 제품군이 동일한 픽스처 PDF와 회귀 스위트를 공유합니다

1257개 Pascal + 515개 C++ 테스트 케이스, 바이트 단위 정렬

PDF 표준 전 영역 커버

PDF/A-1b 출력(SaveAsPdfA)과 검증(ValidatePdfA)에 더해, 조항 수준 결과 코드·마커 주입·버전 준수 게이팅을 갖춘 PDF/UA, PDF/E, PDF/X, PDF/R, PDF/VT 검증기를 제공합니다. PDF/A는 ISO 19005 part 1~4를, PDF/X는 X-6까지 커버하고, PDF/VT에는 VT-2s 스트림 패키징이 포함됩니다

전용 유닛 FPdfPdfa/Pdfua/Pdfe/Pdfx/Pdfr/Pdfvt.pas

접근성 음성 읽기 / 저시력

TPdfReadingSession이 호스트 TTS 엔진의 음성 읽기를 조율합니다(문장 단위 읽기 단위, 단어 단위 강조, 음성 텍스트 매핑). 여기에 InvertPdfBitmap, GrayscalePdfBitmap, DuotonePdfBitmap 저시력 변환과 실시간 야간 듀오톤 보기가 더해집니다

대부분의 래퍼에는 아예 없는 접근성 계층

제로 카피 + 취소 가능한 점진적 렌더링

렌더 경로는 PDFium 출력을 대상 TBitmap DIB 버퍼에 직접 기록하여 프레임마다 발생하는 전체 페이지 픽셀 복사를 생략합니다. RenderPageProgressive는 반복 사이에 취소 토큰을 폴링하므로 렌더 도중에 중단할 수 있습니다

고 DPI에서 프레임당 width×height×4바이트 복사 한 번 절약

다중 기가바이트 PDF용 온디맨드 스트리밍

LoadCustomDocument의 온디맨드 TStream 어댑터를 통해 PDFium은 블록 단위로 읽습니다. 다중 기가바이트, 원격 또는 데이터베이스 기반 문서도 메모리 복사본 없이 로드되며 거의 즉시 사용할 수 있는 첫 화면에 도달합니다

2.x GB 문서: 거의 즉각적인 첫 화면

세 가지 컴포넌트 + 33개 공유 데모

TPdf(문서 엔진), TPdfView(대화형 뷰어), TPdfThumbnailView(썸네일 내비게이션). 세 IDE에서 공유하는 33개의 COMMON 데모가 보기, 검색, 양식 작성, 병합/분할, 일괄 내보내기, 인쇄, 보안 감사, 사전 검사 보고서 등을 다룹니다

PDFViewer / PreflightReport / SecurityAudit / StandardsLab 등

보안 우선 기본값

링크 액션 허용 목록(LinkOptions), 기본 비활성화된 실행 액션, 위험 노출 면을 감사하는 SecurityAudit 데모를 제공합니다. 위험한 액션을 기본으로 열어두는 대신 처음부터 안전합니다

보안에 민감한 금융 / 의료 배포에 적합

소스 포함 · 로열티 프리 · 장기 지원

Pascal 소스를 제공하며 런타임 로열티가 없고 장기 유지 관리를 제공합니다. Win32/Win64 pdfium.dll과 pdfium.v8.dll(V8/XFA 활성화)을 함께 제공하고, 선택적 Skia 렌더 훅도 지원합니다

배포당 요금 없음

그 근거

3IDE 제품군: Delphi / C++Builder / Lazarus
6+PDF 표준: A / UA / E / X / R / VT
33세 IDE 공유 COMMON 데모
1770+Pascal + C++ 회귀 테스트 케이스

PDFium Delphi Component가 맞는 팀

문서 뷰어 / 리더

프로덕션급 렌더링 품질과 상호 작용(텍스트 선택, 검색 강조, 링크, 확대/축소, 연속 두 페이지 보기)이 필요한 임베디드 PDF 뷰어

접근성 / 보조 기술

시각 장애 사용자를 위한 음성 읽기 조율과 저시력 변환. 대부분의 PDF 래퍼에는 아예 없는 계층입니다

컴플라이언스 / 사전 검사 툴체인

PDF/A 생성·검증, PDF/UA 접근성, 버전 게이팅, CI 친화적 사전 검사 보고서가 필요한 경우

대용량 / 원격 문서

메모리에 전체를 올려 두지 않고 온디맨드로 로드해야 하는 다중 기가바이트 또는 데이터베이스 기반 PDF

여러 IDE를 함께 쓰는 팀

Delphi, C++Builder, Lazarus를 동시에 사용하는 팀. 하나의 컴포넌트 세트, 동일한 픽스처, 동일한 데모

보안에 민감한 배포

링크 / 실행 액션을 엄격히 통제해야 하는 금융, 의료, 정부 환경

몇 줄로 페이지 렌더링

손으로 작성한 C interop 없이, 네이티브 Pascal 컴포넌트를 바로 사용합니다:

uses PDFium;

var
  Pdf: TPdf;
  Bmp: TBitmap;
begin
  Pdf := TPdf.Create(nil);
  try
    Pdf.FileName := 'report.pdf';
    Pdf.Active := True;
    Pdf.PageNumber := 0;              // pages are zero-based

    Bmp := Pdf.RenderPage(0, 0,
      Round(PointsToPixels(Pdf.PageWidth, 150)),
      Round(PointsToPixels(Pdf.PageHeight, 150)));
    try
      Bmp.SaveToFile('page1.bmp');
    finally
      Bmp.Free;
    end;
  finally
    Pdf.Free;
  end;
end;

다음 단계

제품 개요와 빠른 시작으로 시작하고, 전체 기능 카탈로그와 예제를 살펴보거나, 최신 제공 사항은 릴리스 노트에서 확인하세요