핵심 컴포넌트
- TPdf - PDF 문서 열기, 탐색, 텍스트 추출 및 편집을 위한 메인 PDF 문서 처리 컴포넌트
- TPdfView - PDF 페이지를 표시하고 상호작용하기 위한 시각적 컴포넌트
- TPdfReadingSession - 호스트 TTS 엔진과 TPdfView 단어 추적을 위한 read-aloud 오케스트레이션 컴포넌트
- TPdfThumbnailView - 페이지 탐색을 위한 스크롤 가능한 썸네일 사이드 패널
문서 작업
- 문서 로딩 -
LoadCustomDocument를 통해 디스크, 메모리 스트림, 바이트 배열 또는 온디맨드 TStream 어댑터에서 PDF 파일을 로드합니다. PDFium은 필요에 따라 블록을 읽으므로 멀티 GB 문서와 원격 / 데이터베이스 기반 소스는 사전 메모리 복사가 필요하지 않습니다.- 암호 보호 - 암호로 보호된 PDF 문서를 열고 인증된 세션의 유효
UserPermissions를 보고합니다- 문서 생성 -
CreateDocument,AddPage,AddText,AddImage,AddPicture,AddJpegImage,CreatePath로 처음부터 새로운 PDF 문서를 만듭니다- 문서 저장 - 다양한 옵션(증분, 보안 제거)과 PDF 1.0부터 PDF 1.7까지의 명시적 PDF 대상 버전으로 수정된 문서를 저장합니다
- PDF/A-1b 출력 -
SaveAsPdfA/SaveAsPdfAToStream은 XMP 메타데이터 스트림, sRGB ICC OutputIntent 및 업데이트된 Catalog를 주입하는 증분 업데이트로 기본 저장을 사후 처리하여 결과가 PDF/A-1b를 준수하도록 합니다. 사용자 지정 ICC 프로필은TPdfASaveOptions.IccProfileData를 통해 지원됩니다.- PDF/A 검증 -
ValidatePdfA및 읽기 전용PdfAConformance속성은 열린 문서에서 XMPpdfaid마커, 임베디드 ICC를 갖춘 OutputIntent, 암호화 존재 여부를 스캔하고 준수 수준(pac1a,pac1b,pac2b,pac3b,pacNone또는pacUnknown)과 발견된 각 문제를 설명하는TPdfAValidationIssue항목 목록을 보고합니다- PDF 버전 호환성 검증기 - SaveAs가 PDF 1.0부터 PDF 1.7을 대상으로 할 때 작성자는 선택한 대상 버전 이후에 도입된 사전 항목, 필터, 주석 하위 유형, 액션 유형, 글꼴, 색 공간 또는 암호화 매개변수를 거부합니다(예: JBIG2Decode, MarkInfo, OutputIntents, AES / AES-256, Polygon / Caret / Watermark / Redact 주석, JavaScript / Trans / SetState 액션)
- 스트림 압축 - 자동 FlateDecode 압축으로 저장 시 모든 PDF 스트림이 최적으로 압축되도록 보장하며, 디버그 파이프라인에서는
Compressed := False로 해제할 수 있습니다- 문서 병합 - 다른 PDF 문서에서 페이지를 가져옵니다
- 페이지 부분 가져오기 -
ImportPagesByIndex는 소스 문서에서 명시적 0 기반 인덱스 배열을 복사하며, InsertAt = 0은 1페이지 앞에 삽입하고 InsertAt = PageCount는 추가합니다. 빈 인덱스 배열을 전달하면 모든 소스 페이지를 가져옵니다.- N-up 구성 -
ImportNPagesToOne은 PDF 사용자 단위(1단위 = 1/72인치)로 크기가 지정된 소스 문서의 페이지를 NumX×NumY 합성한 페이지를 가진 새로운TPdf를 반환합니다- 페이지 재정렬 -
MovePages는 0 기반 인덱스 배열과 첫 번째로 이동된 페이지의 대상 인덱스를 사용하여 페이지를 제자리에서 재정렬합니다- Form XObject 페이지 재사용 -
CreateXObjectFromPage는 다른 문서의 모든 페이지에서 재사용 가능한TPdfXObject핸들을 만듭니다.InsertFormObjectFromXObject는 래핑된 페이지의 사본 하나를 현재 페이지에 삽입합니다. 워터마크, 템플릿 오버레이 및 "한 페이지를 여러 페이지에 스탬프" 워크플로에 이상적입니다. 대상 페이지 객체는FPDFPageObj_SetMatrix및TPdfMatrix헬퍼를 통해 위치 지정, 크기 조정 및 회전할 수 있습니다.- 페이지 관리 - 개별 페이지 추가, 삭제 및 조작.
AddPage(0, ...)는 첫 번째 페이지를 삽입하고 즉시 활성화합니다- 페이지 박스 - 현재 페이지에서 MediaBox, CropBox, BleedBox, TrimBox 및 ArtBox를 읽고 씁니다
- Catalog 언어 - Catalog /Lang 항목에 저장된 문서 언어를 읽고 씁니다
- Trailer File ID - 영구 및 변경 Trailer /ID 항목을 바이너리 바이트로 읽습니다
- 문서 JavaScript 액션 - 문서 수준 JavaScript 이름 트리 액션 이름 및 스크립트를 열거합니다
- Tagged PDF 구조 트리 - tagged PDF 페이지의 논리적 구조 요소, 접근성 텍스트, 언어, marked-content ID 및 계층을 검사합니다
- 뷰어 환경설정 - 문서의 뷰어 환경설정 사전에서
PrintCopies,PrintPageRanges,PrintScaling및PrintPaperHandling을 읽습니다. 저장된 PDF는 기본적으로 첫 페이지 열기 액션으로 Fit Height를 사용합니다
텍스트 작업
- 텍스트 추출 -
Text,TextInRectangle, 인덱스된Character,CharacterRectangle,CharacterOrigin속성을 통해 문자 수준의 정밀도로 PDF 페이지에서 텍스트를 추출합니다- 문장 단위 읽기 단위 - TPdf.ReadingUnits, TPdf.DocumentReadingUnits, TPdfView.ReadingUnits, BuildReadingUnits 는 동기화된 TTS 듣기 읽기를 위한 문장 크기 TPdfReadingUnit 레코드를 제공합니다
- 읽기 세션 오케스트레이션 -
TPdfReadingSession,TPdfSpokenText,SpokenTextAppend,BuildSpokenTextFromWords,SpokenToPageChar,EstimateSpokenWordIndex는 호스트 TTS 엔진, spoken chunk, word 위치 콜백, 추정 pacing, pause / resume 처리, TPdfView 단어 커서 업데이트를 조정합니다- 단어 단위 읽기 강조 표시 -
TPdf.PageWordBoxes,TPdfView.PageWordBoxes,BuildWordBoxes,WordBoxIndexAtCharIndex,TPdfView.SelectWordBox,TPdfView.SelectWordSpan,TPdfView.TrackReadingWordAt,TPdfView.SetReadingWord,TPdfView.ClearReadingWord,ReadingWordColor,ReadingWordFollow페이지 문자 오프셋을 이를 포함하는 TPdfWordBox에 매핑하고 강조 표시한 뒤 단어 인덱스를 반환합니다; TPdfView에서 TPdfWordBox를 현재 읽는 단어로 강조 표시합니다; TPdfView의 현재 단어 단위 읽기 커서 오버레이를 지웁니다; 현재 단어 단위 읽기 커서에 사용하는 오버레이 색상을 제어합니다; 읽기 추적 중 TPdfView가 현재 읽는 단어를 화면 안으로 스크롤할지 제어합니다- 텍스트 검색 -
FindFirst,FindNext,FindPrevious를 사용하여 대소문자 구분, 단어 단위 및 연속 검색 옵션으로 텍스트를 찾습니다- 검색 하이라이트 오버레이 -
TPdfView.HighlightSearchText는 현재 뷰 페이지를 스캔하고 각 다시 그리기 시 모든 일치 항목 위에 실제 알파 블렌딩된HighlightColor오버레이를 그려서 일치 횟수를 반환합니다.ClearHighlight는 오버레이를 제거합니다. 일치 항목은 페이지별이므로 다른 페이지로 이동하면 자동으로 지워집니다.HighlightColor는 기본값으로clYellow이며 애플리케이션에서 테마 지정할 수 있도록 게시됩니다.- 문자 속성 -
CharacterAngle,CharacterFontSize,CharacterFontWeight,CharacterGenerated,CharacterIsHyphen,CharacterMapError인덱스 속성으로 개별 문자의 글꼴 크기, 굵기, 각도 및 위치에 접근합니다- 유럽 문자 지원 -
AddText는 텍스트 객체를 만들기 전에 일치하는 시스템 TrueType 글꼴을 자동으로 로드하고 캐시하므로 PDFium의 내장 표준 글꼴이 표현할 수 없는 악센트 부호가 있는 체코어, 프랑스어, 독일어, 스페인어, 포르투갈어, 폴란드어 및 터키어 문자가 코드 변경 없이 올바르게 렌더링됩니다- 텍스트 추가 - 사용자 지정 글꼴, 색상, 투명도 및 회전으로 PDF 페이지에 새 텍스트를 추가합니다
- 텍스트 객체 위치 지정 -
SetTextPositions및TPdfSingleArray를 통해 기존 텍스트 객체에 대한 문자별 위치를 설정합니다- 글꼴 정보 - 페이지 객체별로 패밀리 이름, 임베딩 상태, 이탤릭 각도, 어센트 / 디센트 및 원시 글꼴 데이터를 포함한 글꼴 속성을 검색합니다
주석 지원
- 주석 유형 - 텍스트, 링크, 강조 표시, 밑줄, 취소선 및 기타 많은 주석 유형 지원
- 주석 생성 - 프로그래밍 방식으로 새 주석 생성
- 주석 편집 - 색상, 투명도 및 내용을 포함한 기존 주석 속성 수정
- 링크 주석 - 액션 지원이 포함된 내부 및 외부 링크 처리
폼 지원
- 음성 폼 입력 접근자 - TPdf 및 TPdfView 의 FocusedFormFieldValue, FocusedFormFieldName, FocusedFormFieldDetails 는 키보드 또는 음성 기반 폼 입력을 위해 현재 논리 폼 필드의 값, 이름, TPdfFormFieldInfo 를 제공합니다
- 폼 유형 - AcroForm 및 XFA 폼 지원
- 폼 채우기 - JavaScript 지원이 포함된 대화형 폼 채우기
- V8 DLL 선택 - 일치하는
DLLs\Win32또는DLLs\Win64폴더의pdfium.v8.dll을 사용하려면 로딩 전에EnableV8Engine을 설정하고V8FeaturesAvailable,XfaBStrHelpersAvailable,GetRecommendedV8Flags를 통해 V8/XFA 헬퍼 가용성을 쿼리합니다- 필드 접근 - 인덱스 또는 위치별로 폼 필드 값을 읽고 씁니다
- 필드 정보 - 필드 유형, 플래그, 이름 및 기타 속성에 접근
- 필드 플래그 -
SetFormFieldFlags/SetFormFieldFlagsAt를 통해 인덱스 또는 위치별로 AcroForm 필드 플래그를 업데이트하며, 읽기 전용, 필수, 암호 및 다중 선택 플래그를 포함합니다- 폼 평탄화 -
GenerateFormAppearances는 모든 페이지의 모든 폼 위젯에 대한 /AP 외관 스트림을 재생성하고,FlattenPage/FlattenAllPages는 주석과 폼 필드를 정적 페이지 콘텐츠로 굽습니다(편집 불가)- 폼 위젯 텍스트 선택 및 실행 취소 / 다시 실행 - 포커스가 있는 AcroForm 위젯에서 뷰는
GetSelectedFormText(현재 선택된 텍스트),SelectAllFormText(모든 문자 선택) 및FormUndo/FormRedo/FormCanUndo/FormCanRedo(PDFium의 위젯별 편집 히스토리 구동)를 제공합니다. 뷰가 비활성이거나 포커스가 있는 위젯이 없을 때 여섯 가지 모두 안전하게 단락 평가합니다.
이미지 작업
- 이미지 추출 - 인덱스된
Bitmap속성으로 PDF 페이지에서 비트맵을 추출하며,BitmapCount를 반복하여 모든 이미지를 디스크에 저장합니다- JPEG 삽입 -
AddJpegImage는 원시 JPEG 바이트의 TStream을 받아 재인코딩 없이 이미지를 /DCTDecode XObject로 임베드합니다- Picture 지원 -
AddPicture는 등록된 VCL/LCL 그래픽 클래스를 통해 자동 형식 변환이 포함된TPicture객체를 받습니다- 직접 이미지 삽입 -
AddImage(FileName)는 VCL 또는 LCL 그래픽 유닛(BMP, PngImage를 통한 PNG, JPG 등)에 등록된 모든 형식을 인식하고 AddPicture 파이프라인을 공유합니다.AddImage(TBitmap)는 TPicture 중간 단계를 건너뛰어, 렌더링 또는 일괄 생성 작업에서 이미 TBitmap을 보유한 호출자에게 적합합니다.- 이미지 ICC 프로필 - 이미지 페이지 객체는 존재할 때 임베디드 ICC 프로필 데이터를 노출합니다(
FPDFImageObj_GetIccProfileDataDecoded바인딩)- 썸네일 생성 -
Thumbnail속성으로 페이지 썸네일 비트맵을 만들고TPdf.RenderPageThumbnail으로PageNumber를 바꾸지 않고 1 기반 페이지를 렌더링합니다
헬퍼 유닛
- 비동기 인프라 -
FPdfAsync는 UI에서 협력적 취소 의미론을 위한IPdfCancellationToken/IPdfCancellationTokenSource, 재사용 가능한PdfNoCancellationToken싱글톤, 그리고 백그라운드 스레드에서 워커를 실행하고 성공, 취소 및 실패 사례를 구분하는TPdfFutureResult<T>봉투를 메인 스레드에 다시 게시하는 가벼운TPdfFuture<T>헬퍼를 노출합니다- 스트림 어댑터 -
TPdfStreamAdapter는 PascalTStream을 PDFium의FPDF_FILEACCESS콜백에 연결하여LoadCustomDocument가 전체 PDF를 메모리에 버퍼링하는 대신 필요에 따라 블록을 읽도록 합니다- 행렬 구성 -
FPdfMatrix는Translate,Scale,Rotate,HorizontalFlip,VerticalFlip,CentralFlip,Skew,Multiply를 위한 객체 지향 API로 PDFium의FS_MATRIX를 래핑합니다.Multiply는 새 행 값을 계산하기 전에 여섯 개의 행렬 요소를 스냅샷하여, 동일 호출 중에 이전 요소가 덮어쓰여져 잘못된 합성을 생성하는 대안 Pascal 구현의 함정을 피합니다.- 취소 가능한 점진적 렌더링 -
TPdf.RenderPageProgressive는 PDFium의FPDF_RenderPageBitmap_Start+RenderPage_Continue루프를 구동하고IFSDK_PAUSE콜백을 통해 반복 사이에IPdfCancellationToken을 폴링하여, 장기 고해상도 렌더링이 완료까지 차단되는 대신 페이지 중간에 중단할 수 있습니다.prsDone,prsCancelled또는prsFailed의TPdfProgressiveStatus를 반환합니다.- 제로 카피 렌더 경로 -
RenderPage/RenderTile/RenderPageProgressive는 내부 버퍼를 통한 스테이징 대신 PDFium 출력을 대상TBitmap의 DIB 버퍼에 직접 쓰므로, 렌더당 width × height × 4 바이트의 메모리 복사 한 번을 절약합니다. 이는 고해상도(썸네일 패널, 인쇄 품질 내보내기, 일괄 내보내기)에서 가장 눈에 띕니다. 대상 DIB를 안전하게 래핑할 수 없을 때는 스캔라인별 폴백 경로가 유지됩니다.- 저시력 비트맵 색상 변환 - InvertPdfBitmap, GrayscalePdfBitmap, DuotonePdfBitmap 은 렌더링된 32비트 TBitmap 픽셀을 제자리 변환해 반전, 회색, 2색 저시력 보기를 제공합니다
- 실시간 저시력 보기 -
TPdfView.Options는reInvert와reNightDuotone를 지원하며,NightDuotoneInk와NightDuotonePaper가 오버레이가 그려지기 전에 live night palette를 제어합니다
드로잉 작업
- 경로 그리기 - 선, 베지어 곡선 및 닫힌 도형으로 경로를 만듭니다
- 객체 제거 - 페이지 객체를 제거하고 TPdf 또는 TPdfView에서 페이지 콘텐츠를 재생성합니다
- 채우기 및 선 - 채우기 모드, 색상, 투명도 및 선 속성 구성
- 블렌드 모드 - 다양한 PDF 블렌드 모드 지원
- 선 스타일 - 선 캡, 선 결합 및 선 너비 구성
전자 서명
- 서명 감지 - PDF 문서의 전자 서명 감지 및 열거
- 서명 정보 - 서명 내용, 바이트 범위, 하위 필터, 이유 및 시간에 접근
- MDP 권한 - 문서 수정 감지 및 방지 권한 쿼리
첨부 파일 지원
- 첨부 파일 접근 - 임베디드 파일 첨부 파일 읽기, 생성, 수정 및 삭제
- 첨부 파일 이름 - 첨부 파일 파일명 접근
- 첨부 파일 유형 - 존재할 때 임베디드 파일 MIME 하위 유형 값 읽기
- 북마크 -
Bookmarks배열,BookmarkChildren,HasBookmarkChildren,BookmarkFrom순회 헬퍼를 통해 계층적 지원이 포함된 문서 북마크를 탐색합니다- 이름 지정된 목적지 -
Destination,DestinationByName,DestinationCount를 통해 인덱스 또는 이름별로 이름 지정된 목적지에 접근합니다- 페이지 레이블 -
PageLabel을 통해 각 페이지의 페이지 레이블을 검색합니다. 문서가 표제부에 로마 숫자를 사용할 때 유용합니다- 웹 링크 -
WebLink,WebLinkCount및TPdfView.WebLinkAtPos로 페이지의 웹 링크를 감지하고 탐색합니다- 링크 주석 -
LinkAnnotation,LinkAnnotationCount및TPdfView.LinkAnnotationAtPos를 통해 액션 및 목적지 정보가 포함된 링크 주석에 접근합니다- 안전한 링크 클릭 처리 - TPdfView는 자동 이동 / URI 처리 전에
OnAnnotationLinkClick/OnWebLinkClick이벤트를 발생시키며, launch 액션은 기본적으로 비활성화됩니다. 링크 클릭 감지는 드래그가 아닌 클릭일 때만 실행되며, 새로운 MouseDown 앵커를 사용하여 패닝 제스처가 변경 없이 기존 스크롤 경로를 통해 계속 흐르도록 합니다.
렌더링
- 고품질 렌더링 -
RenderPage/RenderTile을 통해 디바이스 컨텍스트, 비트맵 또는 타일로 페이지를 렌더링하며, 대상 DIB 버퍼에 제로 카피 직접 쓰기를 수행합니다- 취소 가능한 점진적 렌더링 -
RenderPageProgressive는 PDFium의 점진적 루프를 구동하고 반복 사이에IPdfCancellationToken을 폴링하여,prsDone,prsCancelled또는prsFailed를 반환합니다. 취소되면 비트맵은 지금까지 수행된 부분 작업을 보유합니다.- 렌더 옵션 - LCD 텍스트 최적화(
reLcd), 주석(reAnnotations), 그레이스케일 및 인쇄 모드 플래그- Skia 훅 - 호출자가 외부 SkCanvas를 제공할 때 저수준
FPDF_RenderPageSkia및FPDF_FFLDrawSkia바인딩을 사용할 수 있습니다(번들된 DLL 익스포트에 따라 다름)- 인쇄 모드 선택 -
TPdfPrintMode가 포함된SetPdfPrintMode를 통해 EMF, 텍스트 전용, PostScript, 패스스루, 이미지 마스크 및 Type 42 PDFium 인쇄 모드를 설정합니다- 비동기 오버레이 - TPdfView는 애플리케이션 소유 워커가 별도의 TPdf 인스턴스로 렌더링하는 동안 옵트인 로딩 오버레이를 표시할 수 있습니다
- 페이지 회전 - 0, 90, 180, 270도 회전 지원(
ro0,ro90,ro180,ro270)- 투명도 감지 -
Transparent속성은 블렌드 모드 및 부분 알파를 포함하여 현재 페이지의 객체에 투명도가 있는지 보고합니다
보기 (TPdfView)
- 표시 모드 -
dmSingleContinuous,dmTwoPageContinuous및dmTwoPageContinuousWithCover(표지 페이지는 단독으로 서고, 그 다음 두 페이지 펼침으로 계속됨). 유닛 수준의ComputeSpreadPages헬퍼는 뷰어를 인스턴스화하지 않고 펼침 페이지 수학을 노출합니다.- Fit 모드 -
FitMode는 페이지가 뷰포트에 어떻게 배치되는지 선택합니다:pfmNone(수동 줌),pfmActualSize(100%),pfmFitPage(전체 페이지가 뷰포트에 맞음),pfmFitWidth(페이지 너비가 뷰포트 너비와 일치). 활성 fit 모드는 크기 조정 및 현재 페이지가 변경될 때 자동으로 다시 적용됩니다. Zoom을 직접 설정하면 활성 fit 모드가 취소되고(FitMode가pfmNone으로 되돌아감), 표준 PDF 뷰어 관례와 일치합니다.- 줌 제어 -
PageZoom,PageWidthZoom,PageHeightZoom,ActualSizeZoom페이지별 헬퍼로 가변 줌- 페이지 색상 -
PageColor는 렌더링된 PDF 페이지 배경을 주변 컨트롤의Color와 분리합니다. 기본값은clWhite이므로 호스트 애플리케이션의 테마에 관계없이 PDF 페이지가 종이 흰색으로 렌더링됩니다. 다크 모드 뷰어는 실제 PDF 페이지를 흰색(또는 애플리케이션이 선택한 모든 색상)으로 유지하면서 스크롤 영역을 어둡게 유지할 수 있습니다.- 대화형 텍스트 선택 - 최종 사용자가 PDF 페이지의 텍스트를 드래그하여 선택할 수 있으며, 선택과 팬 간의 히트 테스트 자동 전환: 문자를 클릭하면 선택 드래그가 시작되고 공백을 클릭하면 패닝됩니다. 더블 클릭은 단어를 선택하고, 트리플 클릭은 줄을 선택하며,
Ctrl+A는 페이지를 선택하고(펼침 모드에서는 두 페이지 모두),Ctrl+C는CF_UNICODETEXT로 복사하며,Shift+화살표는 선택을 확장하고, 텍스트 위에 호버하면 커서가crIBeam으로 전환되며, 뷰어 가장자리로 드래그하면 페이지가 자동 스크롤됩니다. 새로 게시된SelectionColor및OnSelectionChange; 새로운 publicHasSelection,SelectedText,SelectionCharCount,ClearSelection,SelectAll,CopySelectionToClipboard. 펼침 표시 모드는 CR/LF 결합으로 두 보이는 페이지에서 선택합니다. 호스트가 자체PopupMenu를 할당하지 않은 경우 기본 우클릭 복사 팝업이 자동으로 첨부됩니다. 키오스크 호스트를 위한 v1.17.0AllowUserTextSelection플래그로 게이트됩니다.- 좌표 매핑 -
DeviceToPage/PageToDevice로 뷰어 디바이스 좌표와 PDF 페이지 좌표 간 변환,TRect를 받고TPdfRectangle을 반환하는 오버로드 포함- 텍스트 선택 및 히트 테스팅 -
CharacterIndexAtPos로 뷰어 점 아래의 문자를 해결하고PaintSelection을 통해 텍스트 선택 강조 표시를 그립니다- 마우스 및 키보드 - 마우스 드래그 스크롤, PgUp / PgDn / Ctrl+Home / Ctrl+End 단축키 및 휠 업 / 휠 다운 페이지 탐색이 포함된 완전한 입력 장치 지원. Ctrl+휠은 애플리케이션 줌용으로 예약되어 탐색 핸들러가 건너뜁니다.
- 사용자 입력 잠금 -
AllowUserPageChange는 키보드 페이지 단축키를 제어하고,ChangePageOnMouseScrolling은 휠 페이지 점프를 제어하며,AllowUserTextSelection은 마우스 / 키보드 텍스트 선택 입력을 제어합니다. 세 가지 모두 기본값은 True이며, 서브클래싱 없이 키오스크, 미리보기 창 또는 읽기 전용 임베딩을 잠그려면 False로 전환합니다.- 비동기 렌더 오버레이 -
AsyncRendering,LoadingText,LoadingColor는 렌더링된 페이지 위에 작은 "로딩 중..." 표시기를 그려서, 장기 렌더링을 위해 자체 워커를 사용하는 애플리케이션이 일관된 시각적 행동 유도성을 공유합니다. 기본값은 기존 동작을 유지합니다.TPdf는 이제 인스턴스별로 렌더 및 페이지 언로드 호출을 직렬화합니다. 애플리케이션은 여전히 워커 디스패치를 소유하며 렌더링이 진행 중인 동안 문서를 변경하지 않아야 합니다.- 안전한 링크 클릭 처리 -
LinkOptions는 네 가지 PDF 링크 액션 유형의 자동 동작을 제어하는 게시된 세트입니다:loAutoGoto(페이지 점프),loAutoOpenURI(ShellExecute),loAutoLaunch(ShellExecute),loAutoEmbeddedGoto(예약됨). 기본값은loAutoGoto및loAutoOpenURI만 활성화합니다.loAutoLaunch및loAutoEmbeddedGoto는 꺼진 채로 유지되어 잘못된 클릭이 임의의 프로그램을 실행할 수 없습니다.OnAnnotationLinkClick과OnWebLinkClick은 자동 액션 전에 발생하며 애플리케이션이 이벤트를 Handled로 표시하거나 리디렉션할 수 있도록 합니다.- 폼 상호작용 - 뷰어 내 대화형 폼 편집과 v1.23.0 선택 / 실행 취소 / 다시 실행 헬퍼
- 시각적 스타일링 -
PageShadowSize,PageShadowColor,PageBorderColor는 페이지 사각형 아래에 선택적인 그림자와 그 주위에 1픽셀 테두리를 그립니다.SmoothScroll은 이제 타이머 기반 세그먼트로 행/페이지 스크롤바 명령을 애니메이션화하며 썸 추적은 즉시 유지됩니다- 썸네일 탐색 -
TPdfThumbnailView(유닛FPdfThumbnail)는 호버 및 선택 강조 표시와 클릭 이동 탐색이 포함된 스크롤 가능한 사이드 패널에 행당 페이지 썸네일 하나를 렌더링합니다. TPdfView 옆에 배치되도록 설계되었습니다. 속성:CurrentPageIndex,ThumbnailWidth,ThumbnailHeight,TextColor,HoverColor,SelectionColor,BorderColor; 이벤트:OnPageClick.
압축
- 자동 압축 -
Compressed속성이 True(기본값)일 때 저장 시 모든 PDF 스트림이 FlateDecode로 압축되도록 보장합니다- 사후 처리 - 압축 엔진은 저장된 PDF 데이터를 스캔하고 zlib 최대 압축을 사용하여 압축되지 않은 모든 스트림을 압축합니다
- 크로스 참조 재구축 - 스트림 압축이 바이트 오프셋을 변경할 때 xref 테이블을 자동으로 재구축합니다
- 제로 오버헤드 - 모든 스트림이 이미 압축되어 있으면 데이터는 수정 없이 통과합니다
보안
- 암호 지원 - 암호로 보호된 PDF 문서 열기
- 권한 - 문서 및 사용자 권한 읽기.
SecurityAudit데모는 권한, 첨부 파일, 문서 JavaScript, URI / Launch 링크, 서명, XFA, V8 가용성을 TXT / JSON 리포트 저장 및 TXT 복사 액션이 포함된 읽기 전용 위험 표면으로 결합합니다- 보안 제거 - 보안이 제거된 문서 저장(권한이 있을 때)
인쇄
- 인쇄 모드 - 전역
SetPdfPrintMode함수를 통해 EMF, 텍스트 전용, PostScript Level 2 / 3, PostScript 패스스루, EMF 이미지 마스크 및 Type 42 인쇄 모드 중에서 선택합니다- 뷰어 환경설정 -
PrintCopies,PrintPageRanges(1 기반 페이지 범위),PrintScaling,PrintPaperHandling을 통해 문서 작성자 의도를 표면화합니다.SetPdfPrintPaperHandlingDevMode는 양면 인쇄 힌트를 WindowsDEVMODE.dmDuplex에 매핑합니다- N-up 인쇄 - Delphi, C++Builder 및 Lazarus
PrintPreferences데모는 홀수 / 짝수 페이지 필터링, 그레이스케일 렌더링, 선택적 1픽셀 셀 테두리, PDF 작성자 인쇄 환경설정 및SetPdfPrintPaperHandlingDevMode를 통한 양면 인쇄 의도 매핑이 포함된 N-up 시트 구성(시트당 1 / 2 / 4 / 9 페이지)을 보여줍니다
제공 데모
Demo\Delphi,Demo\CBuilder,Demo\Lazarus트리에는 세 가지 IDE 패밀리 전체에서 라이브 API 표면을 실행하는 실행 가능한 샘플 프로젝트가 제공됩니다. 하이라이트:
- PDFViewer / MultiPageViewer / SplitView - 엔드 투 엔드 TPdfView 사용: 로드, 탐색, 줌, 회전, 두 페이지 펼침, 표지 인식 레이아웃, 동기화된 명령이 포함된 Delphi / C++Builder / Lazarus 나란히 PDF 비교. 뷰어 데모는 또한 멀티 기가바이트 PDF에 대한 실용적인 속도 테스트이며, 2.x GB 문서가 거의 즉시 사용 가능한 첫 번째 뷰에 도달할 수 있고 페이지 렌더링은 응답성을 유지합니다
- ViewerInteractionLab - 표시 모드, fit 모드, 페이지 색상, 회전, 검색 강조 표시, 텍스트 선택, 선택된 텍스트 미리보기, 클립보드 액션 및 DeviceToPage 좌표 피드백을 위한 Delphi, C++Builder, Lazarus 집중 TPdfView 상호작용 샘플
- SearchAndSelect - 전체 페이지 검색 결과 목록, 이전 / 다음 일치 탐색, 더블 클릭 결과 이동,
HighlightSearchText, 대소문자 구분 / 단어 단위 검색,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection, 펼침 표시 모드를 위한 Delphi, Lazarus, C++Builder 집중 워크플로 샘플- PreflightReport - 재사용 가능한
FPdfPreflightReport주위의 Delphi, Lazarus, C++Builder 워크플로 데모 및 Delphi 콘솔 동반자. PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R, PDF/VT 검증 결과를 상태, 우선순위, 문제 카테고리, 문제 카테고리 수, 다음 액션 요약 행, 문제 권장사항, 텍스트 / Markdown / JSON / CSV 미리보기, TXT / HTML / Markdown / JSON / CSV 리포트, 스크립트 가능한 리포트 생성, 리포트 디렉토리 라우팅이 포함된 일괄 목록 및 디렉토리 처리, TXT / JSON / HTML 집계 요약, CSV 행 매니페스트, 선택적 리포트 첨부 임베딩, CI 게이팅 종료 코드로 수집합니다- ContentExtractionLab - 문서 메타데이터, 페이지 텍스트, 페이지 객체, 이미지, 첨부 파일, 링크, 주석, 북마크 및 글꼴 / 문자 메트릭에 대한 Delphi, Lazarus, C++Builder 통합 콘텐츠 인벤토리 워크플로. TXT / JSON 내보내기, 모두 / 없음 카테고리 선택, 소스 PDF 저장, 리포트 복사 액션을 포함합니다
- WatermarkStamp - 다중 페이지 대상 PDF 전체에서 중앙 워터마크, 모서리 스탬프, 페이지 번호 레이블을 위한 Delphi, Lazarus, C++Builder 재사용 가능한 Form XObject 워크플로
- CreatePDF - 텍스트, 이미지, 경로, 테이블, 워터마크 구성으로 처음부터 다중 페이지 PDF 빌드; 글꼴 선택 및 유니코드 처리 검증을 위한 악센트 부호가 있는 체코어 / 프랑스어 / 독일어 / 스페인어 / 포르투갈어 / 폴란드어 / 터키어 텍스트를 작성하는 '유럽 텍스트' 옵션 포함
- ExtractText / ExtractImages / ContentExtractionLab - 추출된 텍스트(페이지별 분리 출력 포함) 또는 임베디드 이미지를 디스크에 저장하거나, 한 번의 패스로 다중 카테고리 콘텐츠 인벤토리 리포트 생성
- FormFill - AcroForm 필드 메타데이터 읽기, 값 쓰기, /AP 외관 재생성, 편집 가능 또는 평탄화된 결과 저장
- FontProperties - Delphi, C++Builder, Lazarus에서 TPdf와 TPdfView 양쪽으로 인덱스된 문자 / 글꼴 메타데이터 검사
- MergePDF / SplitPDF - 파일별 페이지 범위 선택, 선택적 출력 경로, 실행 로그, 취소 버튼, 병합 완료 요약이 포함된 여러 소스 PDF 결합, 또는 하나의 PDF를 페이지별 출력 파일로 분할
- PDFtoJpg / BatchExport - 파일별 전체 진행률, 페이지별 현재 진행률, DPI / 품질 / 암호 입력,
IPdfCancellationToken으로 뒷받침되는 협력적으로 취소 가능한 일괄 처리가 포함된 Delphi, C++Builder, Lazarus 단발 또는 일괄 다중 파일 PDF에서 JPG로의 변환- StandardsLab - PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R, PDF/VT 검증, 문제 보고, 표준 지향 저장 출력을 위한 Delphi, C++Builder, Lazarus 워크플로 샘플
- PrintPDF / PrintPreferences - 미리보기, 페이지 범위, 매수, 한 부씩 인쇄, 진행률, 취소가 포함된 Delphi, C++Builder, Lazarus 표준 PDF 인쇄(PrintPDF), 그리고 홀수 / 짝수 필터링과 PDF 작성자 인쇄 환경설정이 포함된 Delphi, C++Builder, Lazarus N-up 시트 구성(PrintPreferences)
- SecurityAudit - 권한, 첨부 파일, JavaScript 액션, URI / Launch 링크, 웹 링크, 서명, XFA 상태, V8 / XFA 헬퍼 가용성, TXT / JSON 감사 리포트를 위한 Delphi, C++Builder, Lazarus 읽기 전용 위험 표면 샘플
- Attachment - PDF 만들기, MIME 하위 유형 표시가 포함된 임베디드 파일 첨부 파일 추가 / 목록 / 추출 / 삭제 / 저장
- ImageToPDF - 미리보기 및 이미지별 진행률이 포함된 Delphi, C++Builder, Lazarus 이미지 일괄 변환을 하나의 PDF로(페이지당 이미지 하나)
Delphi, C++Builder, Lazarus 회귀 스위트는 동일한 픽스처 PDF를 공유하는 147개(Pas) / 123개(C++) 케이스를 다루므로 세 가지 IDE 패밀리 전체에서 동작이 바이트 정렬을 유지합니다.
플랫폼 지원
- Delphi - Delphi XE5 (RAD Studio XE5)부터 Delphi 13.1 Florence (RAD Studio 13.1)까지
- C++Builder - C++Builder XE5 (RAD Studio XE5)부터 C++Builder 13.1 Florence까지
- Lazarus - Free Pascal / Lazarus 지원
- Win32 / Win64 - 32비트 및 64비트 Windows 플랫폼 모두