PDFiumVCL 릴리스 노트
PDFiumVCL의 사용자 표시 기능, 수정 사항, 뷰어 개선, 문서 생성, PDF/A 출력, 렌더링 및 문서 업데이트 버전 기록입니다.
Version 1.39.52
변경 (Changed)
Demo\Lazarus\CreatePDF를 개선하여 입문 샘플이 이제 vector paths, table content, embedded image, text annotation, rotated text, 더 명확한 document-building walkthrough를 포함한 2페이지 PDF를 생성합니다.- 모든 Delphi, C++Builder, Lazarus demo folder에 보기 좋은
README.html페이지를 추가하고, 남아 있던 text-only demo README를 브라우저에서 읽기 쉬운 guide로 교체했습니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.52로 업데이트했습니다.
Version 1.39.51
Demo\Delphi\PreflightReportClibatch summary를 개선하여 selected standards 전체의 Pass, Action required, Review results에 대한 standard status totals를 추가했습니다.- TXT / HTML / JSON / CSV summary의 per-file rows에는 action-required count와 review count가 포함되어 각 generated report를 열지 않고도 CI artifacts를 더 쉽게 검사할 수 있습니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.51로 업데이트했습니다.
Version 1.39.50
Demo\Delphi\PreflightReportClidirectory batch mode를 개선하여batchdir=folder가 발견한 PDF paths를 수집하고 정렬한 뒤 안정적인 순서로 reports를 생성합니다.- Recursive directory scans는 재현 가능한 report order와 summary rows를 생성하며, 명시적
batch=list.txtprocessing은 계속 list file order를 유지합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.50으로 업데이트했습니다.
Version 1.39.49
Demo\Delphi\PreflightReportClibatch summary를 개선하여 source kind, source path, recursive state, output directory, report format, selected standards,failon=mode 같은 run settings를 기록합니다.- JSON summary에는
runobject가 추가되고, TXT 및 HTML summary는 run settings section을 표시하며, CSV rows는 spreadsheet 및 CI pipelines용 동일 audit columns를 반복합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.49로 업데이트했습니다.
Version 1.39.48
Demo\Delphi\PreflightReportCli의 batch output naming을 개선해 같은outdir=를 공유하는 duplicate input file names가 서로의 generated reports를 덮어쓰지 않게 했습니다.- Batch runs는 같은 실행에서 generated report path가 이미 할당된 경우
-2,-3및 이후 suffixes를 추가하고, summaries는 최종 collision-safe report path를 기록합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.48로 업데이트했습니다.
Version 1.39.47
Demo\Delphi\PreflightReportClibatch summaries를 개선해 TXT와 JSON 출력이 이제 total files, processed files, failed files, issues,failon=matches의 aggregate totals를 포함합니다.- CSV summaries는 기존 consumers를 위해 순수 row table로 유지하고, HTML summaries는 dashboard header에 같은 aggregate metrics를 계속 표시합니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.47로 업데이트했습니다.
Version 1.39.46
Demo\Delphi\PreflightReportCli에summary=batch.html/.htm을 추가해 batch runs가 TXT / CSV / JSON manifests와 함께 browser-readable dashboard를 출력할 수 있게 했습니다.- HTML summaries는 total, processed, failed, issue,
failon=match metrics를 보여주고 각 input을 report links, status, counts, error text와 함께 나열합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.46으로 업데이트했습니다.
Version 1.39.45
Demo\Delphi\PreflightReportCli에batchdir=folder와recursive를 추가해 scripts가 list file을 먼저 만들지 않고 PDF folders를 직접 스캔할 수 있게 했습니다.- Directory batch mode는 list-based batch mode의
outdir=,summary=,standards=,failon=동작을 재사용합니다. non-recursive는 선택한 folder만 스캔하고recursive는 subfolders를 포함합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.45로 업데이트했습니다.
Version 1.39.44
Demo\Delphi\PreflightReportCli에summary=batch.csv|json|txt를 추가해 batch runs가 per-file reports 옆에 machine-readable manifest를 출력할 수 있게 했습니다.- Batch summaries에는 각 input path, report path, status, standard count, passed count, issue count,
failon=match state, error text가 포함되어 CI jobs와 외부 scripts에서 사용할 수 있습니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.44로 업데이트했습니다.
Version 1.39.43
Demo\Delphi\PreflightReportCli에batch=list.txt와outdir=reports를 추가해 scripts가 한 번의 실행으로 PDF files 목록에 대한 preflight reports를 생성할 수 있게 했습니다.- Batch mode는 빈 줄과
#comment lines를 건너뛰고 입력 PDF에서 각.preflight.<ext>report name을 만들며, per-file errors 뒤에도 계속 처리하고 반환 전에 processed 및 failed files를 요약합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.43으로 업데이트했습니다.
Version 1.39.42
Demo\Delphi\PreflightReportCli에failon=none|issues|action|review를 추가하여 CI jobs가 생성된 preflight results를 결정적인 exit codes로 변환할 수 있게 했습니다.- CLI는 report file과 optional attached-report PDF가 생성된 뒤 선택한
failon=rule이 일치하면 exit code 2를 반환하며, runtime errors는 계속 exit code 1을 반환합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.42로 업데이트했습니다.
Version 1.39.41
Demo\Delphi\PreflightReportCli에attach=output.pdf를 추가하여 생성된 preflight report를 새 PDF copy의 document-level attachment로 포함할 수 있게 했습니다.- CLI는 생성된 TXT / HTML / Markdown / JSON / CSV report file을 디스크에 유지하고 원래 input PDF path에 다시 첨부하는 것을 거부하여 우발적 덮어쓰기 위험을 줄입니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.41로 업데이트했습니다.
Version 1.39.40
- viewer를 열지 않고 scriptable 방식으로
FPdfPreflightReport를 생성할 수 있는 Delphi console companion인Demo\Delphi\PreflightReportCli를 추가했습니다. - CLI는 no-argument sample creation과 input / output arguments, optional password,
text/html/md/json/csvoutput formats, PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R 및 PDF/VT용standards=filtering을 지원합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.40으로 업데이트했습니다.
Version 1.39.39
FPdfPreflightReport에TPdfPreflightReport.ToMarkdown및SaveMarkdownToFile을 추가하여 preflight reports를 issue tracker에 적합한 Markdown으로 내보낼 수 있게 했습니다.- Delphi, C++Builder, Lazarus
PreflightReport샘플에 기존 TXT / HTML / JSON / CSV workflow와 함께 Markdown preview switching 및 Save MD actions를 추가했습니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.39로 보고하도록 업데이트했습니다.
Version 1.39.38
- Delphi, C++Builder, Lazarus
SecurityAudit샘플에 기존 TXT save / copy workflow와 함께 JSON audit report export를 추가했습니다. - JSON report에는
format,generatedAt,summary,findingCount, 그리고 severity, area, detail 필드를 가진 구조화된findingsrows가 포함됩니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.38로 보고하도록 업데이트했습니다.
Version 1.39.37
FPdfPreflightReport에TPdfPreflightReport.ToCsv와SaveCsvToFile를 추가하여 preflight reports를 spreadsheet-friendly CSV로 내보낼 수 있게 했습니다.- Delphi, C++Builder, Lazarus
PreflightReportsamples를 업데이트하여 기존 TXT / HTML / JSON workflow와 함께 CSV preview switching 및 Save CSV actions를 추가했습니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 업데이트하여 1.39.37을 보고하도록 했습니다.
Version 1.39.36
FPdfPreflightReport에TPdfPreflightReport.IssueCategoryCounts와 재사용 가능한TPdfPreflightIssueCategoryCount,TPdfPreflightIssueCategoryCounts타입을 추가해 marker-level issues를 category별로 집계할 수 있게 했습니다.TPdfPreflightReport.ToText,ToHtml,ToJson을 업데이트하여 생성되는 PreflightReport 출력에 per-standard rows와 detailed issue recommendations alongside issue-category count summaries가 포함되도록 했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.36으로 업데이트했습니다.
Version 1.39.35
- 확장된
PrintDialogsample을 Delphi, C++Builder, Lazarus에서PrintPreferences로 이름 변경하여 demo name이 PDF author print preferences, N-up printing, odd / even filtering, grayscale, cell border, duplex mapping workflow와 일치하도록 했습니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.35로 업데이트했습니다.
Version 1.39.34
Demo\Delphi\PrintPDF에 드래그 앤 드롭 PDF 로드를 추가하고, 기존Demo\CBuilder\PrintPDFworkflow를 Delphi 및 Lazarus PrintPDF 예제와 함께 문서화했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.34로 보고하도록 업데이트했습니다.
Version 1.39.33
Demo\CBuilder\SplitView를 추가하여 Delphi, C++Builder, Lazarus 전체의 SplitView sample matrix를 완성했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.33으로 보고하도록 업데이트했습니다.
Version 1.39.32
Demo\Lazarus\SplitView를 추가하여 two- or three-pane layouts, active-view navigation, synchronized commands, zoom presets, rotation을 포함한 side-by-side PDF comparison을 Lazarus에서도 사용할 수 있게 했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.32로 보고하도록 업데이트했습니다.
Version 1.39.31
Demo\Lazarus\PrintPDF를 추가하여 preview navigation, page ranges, copies, collate mode, progress, cancellation을 포함한 standard PDF print workflow를 Lazarus에서도 사용할 수 있게 했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.31로 보고하도록 업데이트했습니다.
Version 1.39.30
Demo\Lazarus\FontProperties를 추가하여 Delphi, C++Builder, Lazarus 전반의 FontProperties sample matrix를 완성했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.30으로 보고하도록 업데이트했습니다.
Version 1.39.29
Demo\CBuilder\FontProperties를 추가하여 Delphi sample과 함께 C++Builder에서도 indexed character 및 font metadata 검사를 사용할 수 있게 했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.29로 보고하도록 업데이트했습니다.
Version 1.39.28
Demo\Delphi\ExtractTextPages를 추가하여 Delphi, C++Builder, Lazarus 전반의 페이지별 텍스트 추출 sample matrix를 완성했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.28로 보고하도록 업데이트했습니다.
Version 1.39.27
Demo\Lazarus\PrintDialog를 추가해 Delphi, C++Builder, Lazarus의 PrintDialog sample matrix를 완성했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.27을 보고하도록 업데이트했습니다.
Version 1.39.26
Demo\CBuilder\PrintDialog를 추가해 N-up printing과 PDF author print preferences workflow를 Delphi sample과 함께 C++Builder에서도 사용할 수 있게 했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.26을 보고하도록 업데이트했습니다.
Version 1.39.25
Demo\CBuilder\ViewerInteractionLab를 추가해 Delphi, C++Builder, Lazarus의 ViewerInteractionLab sample matrix를 완성했습니다.- library build workflow와 Win64 C++Builder package outputs를 업데이트해
TPdfViewviewer interaction methods가 Win64 demos에서 올바르게 링크되도록 했습니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.25를 보고하도록 업데이트했습니다.
Version 1.39.24
Demo\Lazarus\ViewerInteractionLab를 추가해 focused viewer interaction workflow를 Delphi sample과 함께 Lazarus에서도 사용할 수 있게 했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.24를 보고하도록 업데이트했습니다.
Version 1.39.23
Demo\Lazarus\SearchAndSelect를 추가해 Delphi, C++Builder, Lazarus의 SearchAndSelect sample matrix를 완성했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.23을 보고하도록 업데이트했습니다.
Version 1.39.22
Demo\CBuilder\ContentExtractionLab와Demo\Lazarus\ContentExtractionLab를 추가해 multi-category content extraction workflow를 지원되는 모든 demo IDE로 확장했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.22를 보고하도록 업데이트했습니다.
Version 1.39.21
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReport,Demo\CBuilder\PreflightReport에 preview format selector를 추가하여 보고서를 저장하기 전에 text 또는 JSON output을 확인할 수 있게 했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.21을 보고하도록 업데이트했습니다.
Version 1.39.20
TPdfPreflightReport.ToJson및SaveJsonToFile을 통해FPdfPreflightReport에 JSON export를 추가하여 machine-readable summary, per-standard status / priority, next action, issue detail을 생성합니다.Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReport,Demo\CBuilder\PreflightReport에 TXT / HTML export와 함께 Save JSON 작업을 추가했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.20을 보고하도록 업데이트했습니다.
Version 1.39.19
FPdfPreflightReport에TPdfPreflightStatus, issue categories, per-standard priority, TXT / HTML reports의 next-action guidance를 추가했습니다.Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReport,Demo\CBuilder\PreflightReport가 summary grid에 status, priority, issue count, next action을 표시하도록 업데이트했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.19를 보고하도록 업데이트했습니다.
Version 1.39.18
Demo\Lazarus\SecurityAudit를 추가하여 read-only PDF risk-surface audit workflow에 대한 Delphi, C++Builder, Lazarus 예제 매트릭스를 완성했습니다.- Lazarus 샘플은 permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability, unsupported-feature callbacks를 열거하고 finding list를 TXT report로 저장하거나 복사합니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.18을 보고하도록 업데이트했습니다.
Version 1.39.17
Demo\CBuilder\SecurityAudit를 추가하여 기존 Delphi 예제와 함께 read-only PDF risk-surface audit workflow를 C++Builder에서도 제공합니다.- C++Builder 샘플은 permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, XFA state, V8 / XFA helper availability, unsupported-feature callbacks를 열거하고 finding list를 TXT report로 저장하거나 복사합니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.17을 보고하도록 업데이트했습니다.
Version 1.39.16
Demo\CBuilder\SearchAndSelect를 추가하여 기존 Delphi 예제와 함께 독립 SearchAndSelect viewer workflow를 C++Builder에서도 제공합니다.- C++Builder 샘플은 PDFs 생성 또는 열기, 모든 페이지 matches의 page / character-index previews 목록, Previous / Next 및 double-click navigation,
HighlightSearchText를 통한 현재 페이지 matches 강조를 보여 줍니다. AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChange, spreadDisplayModeoptions도 노출하며, 버전 메타데이터는 이제 1.39.16을 보고합니다.
Version 1.39.15
Demo\CBuilder\WatermarkStamp를 추가하여 재사용 가능한 Form XObject watermark 및 stamp workflows에 대한 Delphi, Lazarus, C++Builder demo matrix를 완성했습니다.- C++Builder 예제는 target 및 stamp PDF를 만들고,
CreateXObjectFromPage로 stamp page를 재사용하며,TPdfMatrixtransforms를 적용해 centered watermarks, corner stamps, page number labels를 저장합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.15를 보고하도록 업데이트했습니다.
Version 1.39.14
Demo\Lazarus\WatermarkStamp를 추가하여 재사용 가능한 Form XObject watermark 및 stamp workflow를 Lazarus로 가져왔습니다.- Lazarus 예제는 target 및 stamp PDF를 만들고,
CreateXObjectFromPage로 stamp page를 재사용하며,TPdfMatrixtransforms를 적용해 centered watermarks, corner stamps, page number labels를 저장합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata가 1.39.14를 보고하도록 업데이트했습니다.
Version 1.39.13
Demo\CBuilder\PreflightReport를 추가하여 재사용 가능한FPdfPreflightReportworkflow의 Delphi, Lazarus, C++Builder demo matrix를 완성했습니다.- C++Builder 예제는
FPdfPreflightReport.hpp를 사용해 standard summaries, TXT report previews, TXT / HTML report files와 Open Last Report 동작을 생성합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 업데이트하여 1.39.13을 보고하도록 했습니다.
Version 1.39.12
Demo\Lazarus\PreflightReport를 추가하여 PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R, PDF/VT preflight report workflow를 Lazarus에서도 사용할 수 있게 했습니다.- Lazarus 예제는 PDF를 열거나 만들고, target standards를 선택하고, summary rows와 TXT report output을 미리 보고, TXT / HTML reports를 저장하고, 가장 최근에 저장한 report를 열 수 있습니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 업데이트하여 1.39.12를 보고하도록 했습니다.
Version 1.39.11
Demo\Delphi\SearchAndSelect를 강화하여 모든 페이지의 검색 결과 목록에서 page number, character index, preview text를 기록하도록 했습니다.- 현재 페이지의
HighlightSearchText동작을 유지하면서 Previous / Next match navigation과 double-click result jumping을 추가했습니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 업데이트하여 1.39.11을 보고하도록 했습니다.
Version 1.39.10
Demo\Delphi\SecurityAudit에 Save Report 및 Copy Report actions를 추가하여 현재 summary와 finding rows를 TXT audit report로 내보낼 수 있게 했습니다.- audit panel이 reset될 때 report export state를 지워, 복사하거나 저장한 reports가 보이는 findings와 일치하도록 했습니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.10으로 업데이트했습니다.
Version 1.39.9
Demo\Delphi\ContentExtractionLab에 source-PDF save, report copy-to-clipboard, all / none category selection actions를 추가했습니다.- category selection이 변경되면 현재 report를 무효화하여 TXT / JSON exports가 보이는 extraction scope를 반영하도록 했습니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.9로 업데이트했습니다.
Version 1.39.8
Demo\Delphi\ContentExtractionLab를 추가했습니다. document metadata, page text, page objects, images, attachments, links, annotations, bookmarks, font / character metrics를 다루는 통합 content extraction workflow sample입니다.- 이 sample은 기존 PDF를 열거나 text, image, attachment, annotation 콘텐츠가 포함된 synthetic PDF를 만든 뒤 summary rows와 상세 TXT / JSON reports를 생성할 수 있습니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.8로 업데이트했습니다.
Version 1.39.7
ValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfR,ValidatePdfVT결과를 하나의TPdfPreflightReport객체로 묶는 재사용 가능한 report helper인Lib\FPdfPreflightReport.pas를 추가했습니다.- PDF를 열거나 만들고, target standards를 선택하고, summary rows와 issue recommendations를 미리 본 뒤 TXT 또는 HTML 보고서를 저장하는 workflow sample인
Demo\Delphi\PreflightReport를 추가했습니다. - 생성된 보고서는 내장 marker-level validation의 범위를 명확히 설명하므로, 필요한 경우 전용 content-level preflight tools와 함께 사용할 수 있습니다.
TPdf.AboutInfo, Lazarus package metadata, package project lists, installer version metadata를 1.39.7로 업데이트했습니다.
Version 1.39.6
- search highlighting, text selection, selected-text preview, copy, clear, spread display modes에 집중한 viewer workflow 샘플
Demo\Delphi\SearchAndSelect를 추가했습니다. - 이 샘플은 새 라이브러리 API를 추가하지 않고
HighlightSearchText, match-case / whole-word 검색 옵션,AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection을 보여 줍니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.6으로 업데이트했습니다.
Version 1.39.5
Demo\Delphi\ViewerInteractionLab을 SearchAndSelect 스타일 viewer UX 샘플로 확장하여HighlightSearchText, match-case / whole-word 옵션, 선택 텍스트 미리보기, 기존 selection / clipboard controls를 포함했습니다.Demo\Delphi\PrintDialog를 확장하여 PDF author print preferences인PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandling및SetPdfPrintPaperHandlingDevModeduplex mapping을 표시합니다.- 읽기 전용 risk-surface 샘플인
Demo\Delphi\SecurityAudit을 추가하여 permissions, attachments, document JavaScript, URI / Launch links, web links, signatures, XFA state, V8 / XFA helper availability를 나열합니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.5로 업데이트했습니다.
Version 1.39.4
Demo\CBuilder\ImageToPDF와Demo\Lazarus\ImageToPDF를 추가하여 Delphi, C++Builder, Lazarus 전반의 ImageToPDF 샘플 매트릭스를 완성했습니다.- 새 샘플은 다중 이미지 선택, 선택 이미지 미리보기, 이미지당 PDF 페이지 1개, A4 portrait / landscape 페이지 크기, 중앙 정렬 이미지 스케일링, 이미지별 진행률, 저장 후 생성된 PDF 열기를 보여줍니다.
TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.4로 업데이트했습니다.
Version 1.39.3
Demo\CBuilder\BatchExport를 추가하여 기존 Delphi 및 Lazarus 샘플과 함께 C++Builder에서도 다중 파일 PDF to JPG 내보내기 workflow를 사용할 수 있게 했습니다.- 이 샘플은
LoadCustomDocument,IPdfCancellationTokenSource, 스트리밍TFileStream입력, 파일별 및 페이지별 진행률, 취소 처리, DPI / quality / password 입력, 완료 후 출력 폴더 열기를 보여줍니다. TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.3으로 업데이트했습니다.
Version 1.39.2
Demo\Delphi\WatermarkStamp를 추가했습니다. 대상 PDF와 재사용 가능한 stamp PDF를 만든 뒤 모든 페이지에 가운데 워터마크, 오른쪽 위 스탬프, 페이지 번호 라벨을 적용하는 실행 가능한 Form XObject 워크플로 예제입니다.- 이 예제는 새 라이브러리 API를 추가하지 않고
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrix,FPDFPageObj_SetMatrix를 보여줍니다. FPDFPageObj_SetMatrix에 행렬을 전달할 때 현재TPdfMatrix.Handle패턴을 사용하도록Docs\en-us\Examples.html을 업데이트했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.2로 업데이트했습니다.
Version 1.39.1
- 현재 project mode에 맞게
nullptr를NULL로 바꾸어PDFViewer및MultiPageViewer의 C++Builder demo batch-build compatibility를 수정했습니다. Demo\Delphi\ViewerInteractionLab를 추가했습니다. 이 예제는TPdfView의 display modes, fit modes, page colors, rotation, user text selection, clipboard actions 및DeviceToPage좌표 피드백을 한곳에서 보여줍니다.Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLab를 추가하여 Lazarus 사용자가 PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R, PDF/VT 검증 및 marker-output 워크플로를 실행할 수 있게 했습니다.Lib\37.0\PDFiumVcl.dprojandLib\FPC\PDFiumLaz.lpk에 standards units를 나열하고 중복된Winapi.ShellAPIimport를 제거하여 DelphiSplitViewdemo 빌드를 수정했습니다.BatchExport,PDFViewer,MultiPageViewer,SplitView의 Delphi demo batch-build blocker를 런타임 동작 변경 없이 수정했습니다.TPdf.AboutInfo, Lazarus package metadata, installer version metadata를 1.39.1로 업데이트했습니다.
Version 1.39.0
Demo\Delphi\StandardsLab를 추가했습니다. PDF를 로드하거나 만들고ValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfR,ValidatePdfVT를 실행한 뒤 감지된 conformance, 통과 상태, issue 수를 하나의 그리드에 표시하는 실행 가능한 표준 워크플로 예제입니다.- StandardsLab의 저장 버튼은
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfR,SaveAsPdfVT를 호출하므로 사용자 지정 harness 없이 PDF 표준 marker 출력을 확인할 수 있습니다. TPdf.AboutInfo, Lazarus 패키지 메타데이터, 설치 관리자 버전 메타데이터를 1.39.0으로 업데이트했습니다.
Version 1.38.0
TPdfView검색 및 텍스트 선택 오버레이가 이제 논리 mask 페인팅 대신 실제 alpha blending을 사용하여 하이라이트 아래의 페이지 내용을 보존합니다.TPrintPaperHandling을 WindowsDEVMODE.dmDuplex값(DMDUP_SIMPLEX,DMDUP_HORIZONTAL,DMDUP_VERTICAL)으로 매핑하는SetPdfPrintPaperHandlingDevMode를 추가했습니다.TPdfView.SmoothScroll이 이제 line/page scrollbar commands를 timer-driven segments로 애니메이션합니다. thumb tracking은 즉시 동작합니다.TPdf.AboutInfo및 설치 관리자 버전 메타데이터를 1.38.0으로 업데이트했습니다.
Version 1.37.0
TPdf에 인스턴스별 render lock을 추가하여RenderPage,RenderTile,RenderPageProgressive, 페이지 reload, 문서 unload 경로를 직렬화합니다. 공유 컴포넌트를 통한 worker 렌더링이 실용적이 되었으며, 문서 변경과 수명 관리는 여전히 애플리케이션이 조율합니다.- zero-copy bitmap wrapper가 bottom-up
TBitmapDIB를 거부하고 PDFium 소유 버퍼로 fallback 후 복사하도록 수정하여 VCL 렌더 테스트의 stride corruption / access violation을 제거했습니다. TPdfView선택 동작을 보강했습니다.AllowUserTextSelection은 사용자 입력만 막고 코드 수준 선택 API는 계속 그리며,SelectAll은 실제 표시 spread를 따라 표지 페이지가 페이지 2를 선택하지 않습니다. Delphi, Lazarus, C++Builder 테스트를 확장했습니다.TPdf.AboutInfo및 설치 관리자 버전 메타데이터를 1.37.0으로 업데이트했습니다.
Version 1.36.0
TPdfView의 최종 사용자 텍스트 선택을 활성화했습니다. v1.17.0에서 예약된AllowUserTextSelection이 mouse drag, double-click word, triple-click line,Ctrl+A,Ctrl+C,Shift+arrows선택 흐름을 구동합니다.SelectionColor,OnSelectionChange, 코드 수준 선택 APIHasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard를 추가했습니다.- spread 표시 모드는 보이는 페이지 사이의 선택을 지원하고, host가
PopupMenu를 지정하지 않으면 기본 Copy 메뉴가 자동 연결됩니다. document, page, Active, DisplayMode 변경 시 선택이 지워집니다. - Delphi, Lazarus, C++Builder 회귀 테스트를 확장하여 선택 속성, mouse path, keyboard shortcut, default popup, clipboard round-trip, spread selection을 커버합니다.
Version 1.35.0
- PDF/VT (ISO 16612-2:2010) 마커 주입 지원 추가: TPdf.SaveAsPdfVT는 현재 문서를 PDF/VT-1 또는 PDF/VT-2 준수 파일 (가변 데이터 및 트랜잭션 인쇄용 PDF 하위 집합)로 승격합니다. PDF/VT는 PDF/X-4 (§6.2.1) 위에 구축되므로 주입기는 PDF/VT 전용 속성과 함께 전체 PDF/X-4 마커 세트 (XMP pdfxid, Info GTS_PDFXVersion + Trapped, ICC 포함 OutputIntent)를 작성합니다.
- PDF/VT 전용 속성에는 XMP
pdfvtid:GTS_PDFVTVersion과pdfvtid:GTS_PDFVTModDate(§6.3 NOTE 1에 따라xmp:ModifyDate와 동기화), 그리고 pdfxid 및 pdfvtid NPES 네임스페이스 모두에 대한 pdfaExtension:schemas 설명이 포함됩니다. - 메모리 내 PDF/VT 출력을 위한 TPdf.SaveAsPdfVTToStream, 단축형
TPdf.SaveAsPdfVT(FileName)추가: 기본적으로 PDF/VT-1 + 내장 sRGB OutputIntent 생성. - TPdf.ValidatePdfVT 추가: PDF/VT 마커 (
pdfvtid:GTS_PDFVTModDate/xmp:ModifyDate동등성,/DPartRoot존재 포함)를 확인하고 TPdfVTValidationResult를 반환합니다. - TPdf.PdfVTConformance 속성 추가: ValidatePdfVT를 명시적으로 호출하지 않고 준수 수준을 반환합니다.
- 새 단위 FPdfPdfvt에 내보낸 새 타입: TPdfVTConformance, TPdfVTTrappedState, TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions.
- 문서 부분 계층 (DPartRoot / DPart, §6.5)은 응용 프로그램 수준 구조이며 자동으로 합성되지 않습니다. PDF/X-4 콘텐츠 수준 요구사항 (폰트 임베딩, 투명도, ICC 색상 관리, OPI / JavaScript / Reference XObject 금지)은 계속 문서 작성자의 책임입니다.
- TPdf.AboutInfo 문자열을 현재 제품 버전을 보고하도록 업데이트했습니다.
Version 1.34.0
- PDF/R-1 (ISO 23504-1:2020) 마커 주입 지원 추가: TPdf.SaveAsPdfR은 현재 문서를 PDF/R-1 준수 파일 (스캔 문서용 PDF 래스터 이미지 전송 하위 집합)로 승격합니다. 주입은 후처리로 달성 가능한 파일 형식 수준 요구사항을 포함합니다 — trailer dictionary와 startxref 사이에 작성되는 고유한
%PDF-raster-1.0주석 (§5), §6.3 화이트리스트 (Version/ViewerPreferences/PageLayout/PageMode/AcroForm/Metadata만)로 축소된 catalog, §6.4.3 (Creator/Producer/CreationDate/ModDate만)로 축소된 Document Information Dictionary, §6.4.4 Table 1의 4개 항목을 포함하는 XMP 스트림, trailer/ID배열. - 메모리 내 PDF/R 출력을 위한 TPdf.SaveAsPdfRToStream, 단축형
TPdf.SaveAsPdfR(FileName)추가. - TPdf.ValidatePdfR 추가: 마커를 확인하고 TPdfRValidationResult를 반환합니다.
- TPdf.PdfRConformance 속성 추가: ValidatePdfR을 명시적으로 호출하지 않고 수준을 반환합니다.
- 새 단위 FPdfPdfr에 내보낸 새 타입: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions. 기본값은 Info에서 Title/Author/Subject/Keywords를, catalog에서 허용되지 않은 항목을 제거합니다.
- 콘텐츠 수준 요구사항 (페이지별 Contents 구조, MediaBox
[0 0 w h], 제한된 필터, object streams 없음, 스트립 레이아웃)은 계속 소스 PDF의 책임입니다. PDF/R은 다른 PDF/x 표준보다 구조적으로 더 엄격하므로 완전한 검증을 위해 TWAIN Working Group 검증기와 결합하십시오. - TPdf.AboutInfo 문자열을 현재 제품 버전을 보고하도록 업데이트했습니다.
Version 1.33.0
- PDF/X (ISO 15930 패밀리) 마커 주입 지원 추가: TPdf.SaveAsPdfX는 베이스 PDF에 증분 업데이트로 후처리하여 현재 문서를 PDF/X-1a:2001, PDF/X-3:2002 또는 PDF/X-4 준수 파일로 승격합니다. 주입은 후처리로 달성 가능한 파일 형식 수준 요구사항을 포함합니다 —
pdfxid:GTS_PDFXVersion과 pdfaExtension:schemas 설명을 포함하는 XMP 메타데이터 스트림,/GTS_PDFXVersion//GTS_PDFXConformance//Trapped항목을 포함하도록 재작성된 Document Information Dictionary,/S /GTS_PDFX의 OutputIntent (임베디드 ICC profile 포함)를 참조하는/OutputIntents를 가진 catalog, trailer/ID배열. - 메모리 내 PDF/X 출력을 위한 TPdf.SaveAsPdfXToStream, 기본 옵션 단축형
TPdf.SaveAsPdfX(FileName)추가: 기본적으로 PDF/X-4와 임베디드 sRGB IEC61966-2.1 OutputIntent 생성. - TPdf.ValidatePdfX 추가: PDF/X 준수 마커를 확인하고 TPdfXValidationResult를 반환합니다.
- TPdf.PdfXConformance 속성 추가: ValidatePdfX를 명시적으로 호출하지 않고 준수 수준을 반환합니다.
- 새 단위 FPdfPdfx에 내보낸 새 타입: TPdfXConformance, TPdfXTrappedState, TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions. 기본값은 PDF/X-4와 sRGB를 대상; 호출자는
IccProfileData를 통해 CMYK ICC profile (FOGRA39, GRACoL2006...)을 제공할 수 있습니다. - 콘텐츠 수준 요구사항 (모든 폰트 임베딩, JavaScript 없음, 가시 annotation 없음, OPI 금지, PDF/X-1a / PDF/X-3의 투명도 규칙)은 계속 문서 작성자의 책임입니다. 완전한 검증을 위해 callas pdfaPilot 또는 Ghent PDF Workgroup Output Suite와 결합하십시오.
- TPdf.AboutInfo 문자열을 현재 제품 버전을 보고하도록 업데이트했습니다.
Version 1.32.0
- PDF/E-1 (ISO 24517-1:2008) 마커 주입 지원 추가: TPdf.SaveAsPdfE는 베이스 PDF에 증분 업데이트로 후처리하여 현재 문서를 PDF/E-1 준수 파일로 승격합니다. 주입은 후처리로 달성 가능한 파일 형식 수준 요구사항을 포함합니다 —
pdfe:ISO_PDFEVersion = "PDF/E-1"과 일치하는 pdfaExtension:schemas 설명을 포함하는 XMP 메타데이터 스트림, §5에서 필수인/ISO_PDFEVersion (PDF/E-1)항목을 포함하도록 재작성된 Document Information Dictionary, §13.1을 통해 ISO 19005-1 §6.7에서 상속된 Info-XMP 동등성, §6.2에서 필수인 trailer/ID배열. - 메모리 내 PDF/E 출력을 위한 TPdf.SaveAsPdfEToStream과 일반적인 경우를 위한 단축형
TPdf.SaveAsPdfE(FileName)추가. - TPdf.ValidatePdfE 추가: PDF/E-1 준수 마커를 확인하고 TPdfEValidationResult를 반환합니다.
- TPdf.PdfEConformance 속성 추가: ValidatePdfE를 명시적으로 호출하지 않고 준수 수준을 반환합니다.
- 새 단위 FPdfPdfe에 내보낸 새 타입: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions.
- Info 사전 재작성은 PDFiumVCL의 PDF/x 후처리 경로에서 처음 있는 일 — 기존 Info 객체를 동일한 객체 번호로 재작성하고 (trailer의 /Info 참조 유지), 소스 trailer에 /Info가 없으면 새 Info 사전을 합성합니다.
- 콘텐츠 수준 요구사항 (폰트 임베딩, ToUnicode CMap, 금지된 XObject / ExtGState 키 / XFA 폼)은 계속 문서 작성자의 책임입니다.
- TPdf.AboutInfo 문자열을 현재 제품 버전을 보고하도록 업데이트했습니다.
Version 1.31.0
- PDF/UA-1 (ISO 14289-1:2014) 마커 주입 지원 추가: TPdf.SaveAsPdfUa는 베이스 PDF에 증분 업데이트로 후처리하여 현재 문서를 PDF/UA-1 준수 파일로 승격합니다. 주입은 후처리로 달성 가능한 파일 형식 수준 요구사항을 포함합니다 —
pdfuaid:part = 1과 일치하는 pdfaExtension:schemas 설명을 포함하는 XMP 메타데이터 스트림, 필수dc:title, catalog/MarkInfo << /Marked true /Suspects false >>및/ViewerPreferences << /DisplayDocTitle true >>(소스에 없는 경우에만 주입), catalog/Lang(호출자가 BCP 47 태그를 제공한 경우), trailer/ID배열. - 메모리 내 PDF/UA 출력을 위한 TPdf.SaveAsPdfUaToStream, 그리고 일반적인 경우를 위한 기본 옵션 단축형
TPdf.SaveAsPdfUa(FileName)추가. - TPdf.ValidatePdfUa 추가: 열린 PDF에서 PDF/UA-1 준수 마커 (StructTreeRoot 존재, /Lang, /MarkInfo /Marked true 및 /Suspects = false, /ViewerPreferences /DisplayDocTitle true, XMP pdfuaid:part 식별자, dc:title 존재, trailer /ID, 암호화 상태)를 확인하고, 감지된 준수 수준과 발견된 문제 집합을 포함하는 구조화된 결과를 반환합니다.
- TPdf.PdfUaConformance 속성 추가: ValidatePdfUa를 명시적으로 호출하지 않고 열린 문서의 준수 수준 (puc1, pucNone 또는 pucUnknown)을 직접 반환합니다.
- 새 단위 FPdfPdfua에 내보낸 새 타입: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions.
- TPdfUaSaveOptions의 빈 필드 (Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language)는 FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage를 통해 자동으로 채워집니다.
- 콘텐츠 수준 요구사항 (StructTreeRoot 태깅 완전성, Figure Alt 텍스트, ToUnicode CMap, 폰트 임베딩 등)은 계속 문서 작성자의 책임입니다 — SaveAsPdfUa는 파일 형식 마커만 추가합니다. ValidatePdfUa는 StructTreeRoot의 부재를
pvuaiMissingStructTreeRoot로 보고합니다. - TPdf.AboutInfo 문자열을 현재 제품 버전을 보고하도록 업데이트했습니다.
Version 1.30.0
- PDF/A-1b 출력이 이제 ISO 19005-1 (Cor.1:2007 포함)의 Document Information Dictionary와 XMP 동등성 요구사항을 충족합니다. PDFium이 베이스 PDF에 기록하는 모든 Info dictionary 항목이 XMP 패킷에 반영되며, Title (dc:title), Author (dc:creator), Subject (Cor.1에 따라 dc:description), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate), ModDate (xmp:ModifyDate)를 포함합니다. xmp:MetadataDate도 함께 발행됩니다.
- PDF/A 문서의 trailer는 이제 항상 /ID 배열을 포함합니다 (ISO 19005-1 6.1.3 필수 요구사항). TPdf.SaveAsPdfA가 이미 file identifier를 가진 문서를 처리할 때, 기존 16바이트 permanent 및 changing ID가 재사용됩니다. 그렇지 않으면 소스 바이트에서 결정적 16바이트 폴백 ID가 도출됩니다.
- 주입되는 XMP는 이제 ISO 19005-1 6.7.8 (Cor.1로 대체)에서 요구하는 pdfaid extension schema 설명을 포함합니다. pdfaid는 XMP Specification 2004에 대한 extension schema로 간주되므로, 모든 준수 파일은 pdfaExtension:schemas 컨테이너에 property names, value types, categories를 선언해야 합니다.
- TPdfASaveOptions에 5개의 새로운 선택적 필드가 추가되었습니다: Producer, CreationDate, ModDate (PDF 날짜 문자열 “D:YYYYMMDDHHmmSSOHH'mm'” 형식), DocumentId, InstanceId (trailer /ID 배열용 16바이트 문자열). TPdf.SaveAsPdfA / SaveAsPdfAToStream은 FPDF_GetMetaText 및 FPDF_GetFileIdentifier를 통해 누락된 필드를 자동으로 채우므로, 기존 호출 코드는 변경 없이 계속 작동합니다.
- TPdf.ValidatePdfA / TPdf.PdfAConformance는 이제 세 가지 추가 문제를 보고합니다: pvaiMissingTrailerId (trailer에 /ID 없음), pvaiMissingXmpDates (xmp:CreateDate 또는 xmp:ModifyDate 누락), pvaiMissingExtensionSchema (pdfaid extension schema 설명 누락).
- Title, Author, Subject, Keywords, Creator, Producer의 비 ASCII 문자가 이제 XMP 패킷에서 UTF-8로 인코딩됩니다 (XMP Specification은 UTF-8 필요). SaveAsPdfA를 통해 다국어 메타데이터가 완전히 보존됩니다.
- TPdf.AboutInfo 문자열을 현재 제품 버전을 보고하도록 업데이트했습니다.
Version 1.29.0
- 포함된 PDFium DLL(Win32 및 Win64, 표준 빌드와 V8 빌드 모두)을 2026-05-22 업스트림 스냅샷으로 갱신하여 FPDFText_SetText / FPDFText_SetCharcodes 크래시 경로에 대한 업스트림 수정과 PDFium 프로젝트의 다양한 내부 강화 사항을 반영함.
- FPdfPageOps.pas에 PDFium의 새로운 저장 플래그 FPDF_SUBSET_NEW_FONTS를 노출하여, FPDF_SaveAsCopy 호출자가 새로 추가된 텍스트 객체에 사용된 임베드 폰트 파일을 자동 서브세팅하도록 요청 가능. 기존 FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL, FPDF_REMOVE_SECURITY 상수는 업스트림의 비트 시프트 형식으로 재정의됨(레거시 숫자 값 3은 바이너리 호환성을 위해 FPDF_REMOVE_SECURITY_DEPRECATED로 보존).
- FPdfView.pas에 FPDF_FONT_BACKEND_TYPE 열거형(FREETYPE / FONTATIONS) 및 FPDF_LIBRARY_CONFIG의 m_FontLibraryType 필드를 추가하여, Skia 렌더러로 PDFium을 초기화하는 애플리케이션이 시작 시 폰트 백엔드를 선택할 수 있도록 함.
- TFPDFPage_InsertObject 시그니처를 업스트림에 맞춰 갱신: C 함수는 이제 void가 아니라 FPDF_BOOL을 반환함(성공 시 TRUE, page_object가 NULL이거나 소유권 이전이 실패하면 FALSE). Delphi / FPC는 함수 반환값 무시를 허용하므로 PDFiumVCL 기존 호출자는 수정 없이 계속 컴파일됨.
- TPdf.AboutInfo 문자열을 수정하여 현재 제품 버전을 보고하도록 함(v1.28.0이 문서 전용 릴리스였던 탓에 v1.27.0에서 멈춰 있었음).
Version 1.28.0
- API 참조 페이지의 인페이지 문서를 대폭 확장. 모든 속성, 메서드, 이벤트, 전역 함수 항목에 3단락 Description, Remarks 목록, 다중 라인 Delphi Example, 더욱 풍부한 See Also 블록을 추가 — 이전에 내용이 부족했던 200+ 페이지를 포함하여 모든 TPdf 카운터, 메타데이터 게터, 폰트 및 문자 액세서, 페이지 레벨 속성, 인덱스 레코드, 문서 레벨 메서드, 그리고 TPdfView의 전체 상태/표시/이벤트 표면을 포괄.
- 도움말 레이아웃을 losLab HotXLS 참조에서 사용하는 시각 베이스라인에 맞춰 미세 조정. h1/h2 크기 통일, API 내비게이션 그리드 스타일을 공유 StyleSheet에 통합, Navigation.html의 페이지별 인라인 CSS 오버라이드 제거.
- 문서에 헬퍼 스크립트(Docs\Build-Expand-Entries.ps1)가 동봉되어 단일 데이터 테이블로부터 항목 페이지 보강 내용을 반복적으로 재생성할 수 있도록 유지보수 가능.
Version 1.27.0
- PDF/A-1b 생성 지원 추가. TPdf.SaveAsPdfA는 현재 열려 있는 문서를 PDF/A-1b 호환 파일로 저장 — 베이스 PDF에 증분 업데이트로 XMP 메타데이터 스트림, sRGB ICC OutputIntent, 갱신된 문서 카탈로그를 주입하여 처리하며, 별도의 DLL API 없이 PDFiumVCL이 지원하는 모든 플랫폼에서 동작.
- 인메모리 PDF/A 출력을 위한 TPdf.SaveAsPdfAToStream 추가.
- TPdf.ValidatePdfA 추가. 열려 있는 PDF의 PDF/A 준수 여부(XMP pdfaid 마커, 임베디드 ICC 프로파일을 포함한 OutputIntent, 암호화)를 검사하여 검출된 준수 레벨과 발견된 구체적 이슈 집합을 담은 구조화된 결과를 반환.
- TPdf.PdfAConformance 속성 추가. ValidatePdfA를 명시적으로 호출하지 않고도 현재 열려 있는 문서의 준수 레벨(pac1b, pac1a, pac2b, pac3b, pacNone, pacUnknown)을 반환.
- 새로 내보낸 타입(새 유닛 FPdfPdfa.pas에 위치): TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions.
- SaveAsPdfA는 TPdfASaveOptions.IccProfileData로 사용자 정의 ICC 프로파일을 지원. 비워두면 내장된 sRGB IEC61966-2.1(HP/Microsoft, 3144 bytes) 프로파일을 자동 사용.
- 단일 HTML 참조를 재구성된 웹 도움말 시스템으로 교체. TPdf 및 TPdfView의 모든 속성, 메서드, 이벤트, 전역 함수마다 한 페이지씩 302개의 개별 API 항목 페이지를 제공하며, 각 페이지는 전체 설명, 파라미터 표, Delphi 코드 예제, See Also 링크를 포함.
- Navigation.html 추가. 여섯 섹션(TPdf 속성/메서드/이벤트, TPdfView 속성/메서드/이벤트, 전역 함수)으로 구성된 종합 한 페이지 API 내비게이션 인덱스. 빠른 검색을 위해 5열 flex 그리드 사용.
- TPdf.html과 TPdfView.html을 타입 참조 섹션(Types, Constants, Global Variables)을 유지한 컴팩트 컴포넌트 개요 페이지로 재구성하고, 모든 멤버에 대해서는 개별 항목 페이지로 링크.
- Search.js로 구동되는 전문 검색 추가. 312개의 인덱싱된 페이지 전체에 대해 클라이언트 측 증분 매칭.
- 사이트 전반의 모든 내비게이션 바를 Navigation.html을 가리키도록 업데이트.
Version 1.26.0
- Demo/Lazarus/BatchExport 추가. v1.14.0 Delphi BatchExport 데모의 LCL 포팅 버전. 동일한 기능 세트: 다중 파일 PDF -> JPG 내보내기, 파일별 전체 진행률 및 페이지별 현재 진행률, DPI/품질/비밀번호 입력, IPdfCancellationToken 기반 협력적 취소 가능 배치 처리. 추출이 성공적으로 끝나면 출력 폴더를 플랫폼 파일 관리자로 자동으로 열어줌.
Version 1.25.0
- TPdf에 Form XObject 페이지 재사용 기능을 추가하여 워터마크, 템플릿 오버레이, “한 페이지를 여러 페이지에 도장 찍기” 워크플로를 지원. CreateXObjectFromPage는 다른 문서의 임의 페이지로부터 재사용 가능한 핸들을 생성. InsertFormObjectFromXObject는 래핑된 페이지의 사본 하나를 현재 페이지에 삽입. 삽입된 FPDF_PAGEOBJECT를 반환하여 호출자가 FPDFPageObj_SetMatrix와 v1.9.0의 TPdfMatrix 헬퍼로 위치 지정/스케일링/회전 가능.
- 새로운 TPdfXObject Pascal 클래스가 PDFium의 FPDF_XOBJECT 핸들을 래핑하고 소멸자에서 자동으로 닫아주므로 수동 FPDF_CloseXObject 호출 의식이 사라짐.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 147 케이스로, C++Builder 스위트를 123 케이스로 확장. 핸들 생성과 페이지 객체 삽입 계약을 커버.
Version 1.24.0
- TPdf.RenderPageProgressive 추가 — PDFium의 점진적 렌더링 루프를 구동하면서 반복 사이마다 v1.7.0의 IPdfCancellationToken을 폴링하는 취소 가능한 RenderPage 변종. 장시간 고 DPI 렌더링을 완료까지 호출자를 막아두지 않고 페이지 중간에 중단 가능.
- TPdfProgressiveStatus 값을 반환: prsDone, prsCancelled, prsFailed. AToken = nil을 전달하면 일시 정지 없이 완료까지 렌더링(prsCancelled가 발생할 가능성 없음).
- v1.21.0에서 도입된 동일한 zero-copy 빠른 경로 사용 — PDFium이 대상 TBitmap의 DIB에 직접 렌더링. DIB를 래핑할 수 없을 때 동일한 레거시 폴백이 적용됨.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 145 케이스로, C++Builder 스위트를 121 케이스로 확장. nil 토큰(완료), 사전 취소 토큰(prsCancelled), 라이브 토큰에서 동기 RenderPage와의 픽셀 동등성을 커버.
Version 1.23.0
- TPdfView에 PDFium의 폼 위젯 텍스트 선택 및 Undo/Redo를 애플리케이션에 노출하는 여섯 개의 새 메서드 추가. GetSelectedFormText는 포커스된 폼 위젯 내에서 현재 선택된 텍스트를 반환. SelectAllFormText는 모든 문자를 선택. FormUndo / FormRedo / FormCanUndo / FormCanRedo는 포커스된 위젯의 편집 히스토리를 구동. 기반 PDFium API는 이미 바인딩되어 있었지만 고수준 진입점이 없었음. 뷰가 비활성이거나 문서에 AcroForm 위젯 포커스가 없을 때 여섯 메서드 모두 안전하게 단락(short-circuit) 처리.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 142 케이스로, C++Builder 스위트를 119 케이스로 확장. 모든 새 메서드에 대해 폼 없음/포커스 없음 계약을 커버.
Version 1.22.0
- TPdf에 페이지 구성 래퍼 추가. ImportPagesByIndex는 0 기반 인덱스 배열을 받아 소스 문서에서 지정된 페이지를 복사. ImportNPagesToOne은 이 문서의 페이지를 N-up 합성한 새로운 TPdf를 반환. MovePages는 페이지를 in-place로 재정렬. 기반 PDFium API는 이미 바인딩되어 있었지만 Pascal 친화적 진입점이 없었음.
- ImportPagesByIndex는 모든 소스 페이지를 가져오기 위해 빈 배열을 허용(C ABI 레벨에서 nil 전달과 동등).
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 136 케이스로, C++Builder 스위트를 115 케이스로 확장. 부분 집합 가져오기, 전체 문서 가져오기, 페이지 재정렬, N-up 합성을 커버.
Version 1.21.0
- TPdf.RenderPage / TPdf.RenderTile(및 대응되는 TPdfView 헬퍼)를 zero-copy 출력 경로로 전환하여 렌더링 성능 개선. 이제 PDFium은 내부 버퍼에 쓴 뒤 행 단위로 복사하는 대신 대상 TBitmap의 DIB 버퍼에 직접 기록하므로 렌더링당 width x height x 4 bytes의 메모리 복사 하나를 절약. 고 DPI(썸네일 패널, 인쇄 품질 내보내기, 배치 내보내기)에서 가장 두드러진 개선.
- 대상 DIB를 래핑할 수 없는 드문 경우(극단적인 치수, 비정상적인 stride, OOM)에 대비하여 레거시 행 단위 경로를 안전 폴백으로 유지. 두 경로의 동작은 바이트 단위로 동일하며 폴백은 단지 더 느릴 뿐.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 132 케이스로, C++Builder 스위트를 112 케이스로 확장. 호출자 비트맵 pf32bit 업그레이드, 치수 라운드 트립, 대형 비트맵 stride sanity 테스트를 커버.
Version 1.20.0
- TPdfView에 검색 결과 하이라이트 기능 추가. HighlightSearchText(Text, MatchCase, MatchWholeWord)는 현재 뷰 페이지를 스캔하여 발견된 매치 수를 반환하고, 다시 그릴 때마다 각 매치 위에 HighlightColor 마스크를 그림. ClearHighlight는 하이라이트를 제거. 매치는 페이지별이므로 뷰를 다른 페이지로 전환하면 자동으로 지워짐.
- HighlightColor의 기본값은 clYellow이며 published이므로 애플리케이션이 자체 UI 팔레트에 맞게 하이라이트 색을 테마화할 수 있음.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 129 케이스로, C++Builder 스위트를 109 케이스로 확장. 기본 색, 색 라운드 트립, sample.pdf 문자열에 대한 “실제 fixture 단어 매치”, “존재하지 않는 단어가 0 매치를 반환”하는 계약을 커버.
Version 1.19.0
- TPdfView에 네 가지 값을 갖는 FitMode 속성 추가: pfmNone(수동 줌), pfmActualSize(100%), pfmFitPage(전체 페이지가 뷰포트에 맞춰짐), pfmFitWidth(페이지 너비가 뷰포트 너비와 일치). 활성 fit 모드는 Resize 시점과 현재 페이지 변경 시 자동으로 재적용되므로 페이지 크기가 혼합된 긴 문서도 완벽하게 프레임이 잡힘.
- Zoom을 직접 설정하면 활성 fit 모드가 자동으로 취소됨(FitMode가 pfmNone으로 되돌아감). 줌 값을 입력하면 Fit Page / Fit Width에서 벗어나는 표준 PDF 뷰어 관례에 일치.
- 기본값은 pfmNone이므로 기존 애플리케이션은 명시적 줌 동작을 그대로 유지.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 124 케이스로, C++Builder 스위트를 106 케이스로 확장. 기본값, 모드 라운드 트립, 로드된 문서에서 fit-page가 실제 줌을 생성하는지, 수동 줌이 fit 모드를 취소하는지를 커버.
Version 1.18.0
- TPdfView에 PageColor 속성을 추가하여 렌더링된 PDF 페이지 배경을 둘러싸는 컨트롤의 Color와 분리. 기본값은 clWhite이므로 이제 PDF 페이지는 호스트 애플리케이션의 테마와 무관하게 종이 흰색으로 렌더링됨. 다크 모드 뷰어는 스크롤 영역을 어둡게 유지하면서 실제 PDF 페이지는 흰색(또는 애플리케이션이 선택한 임의의 색)으로 둘 수 있음.
- 동작 변경: PDF 페이지 색을 바꾸기 위해 TPdfView.Color를 설정하던 애플리케이션은 대신 PageColor를 설정해야 함. 일반적인 경우(테마 컨트롤 배경 위의 흰 페이지)는 코드 변경 없이 기본 경험이 개선됨.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 120 케이스로, C++Builder 스위트를 103 케이스로 확장. 기본값과 색 라운드 트립을 커버.
Version 1.17.0
- TPdfView에 사용자 입력 잠금 토글을 추가하여 키오스크, 미리 보기 창, 읽기 전용 컨텍스트에 뷰어를 임베드하는 애플리케이션이 서브클래싱 없이도 내비게이션 제스처를 비활성화할 수 있게 함. AllowUserPageChange는 새 PgUp / PgDn / Ctrl+Home / Ctrl+End 키보드 단축키를 제어. ChangePageOnMouseScrolling은 새 휠 위/아래 페이지 점프를 제어. AllowUserTextSelection은 향후 마우스 드래그 텍스트 선택 경로용으로 예약. 세 가지 모두 기본값이 True이므로 기존 애플리케이션은 동작 변화 없이 업그레이드 가능.
- 마우스 휠 페이지 내비게이션은 Ctrl+휠을 건너뛰므로 애플리케이션이 Ctrl+휠을 줌용으로 예약해 둘 수 있음.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 118 케이스로, C++Builder 스위트를 101 케이스로 확장. 기본값과 토글 라운드 트립을 커버.
Version 1.16.2
- 뷰어 페이지가 연결된 TPdf 페이지와 다를 때의 주석 링크 클릭에 대한 TPdfView 회귀 커버리지를 Delphi, Lazarus, C++Builder 전반에 걸쳐 실제 headless 마우스 클릭 경로로 확장.
- Delphi 및 Lazarus 스위트는 이제 각각 114 케이스, C++Builder는 이제 99 케이스를 실행.
Version 1.16.1
- TPdfView 링크 클릭 처리 수정. 자동 주석 및 웹 링크 동작이 연결된 TPdf 컴포넌트가 다른 페이지에 머물러 있을 때에도 뷰어가 현재 표시 중인 페이지를 사용하도록 함.
- 연결된 TPdf 컴포넌트가 소멸될 때 TPdfThumbnailView가 dangling Pdf 참조에 대비하도록 강화.
- 썸네일 참조 수명 회귀 커버리지 추가. Delphi 및 Lazarus 스위트는 이제 각각 113 케이스, C++Builder는 이제 98 케이스를 실행.
- v1.7.0부터 v1.16.0까지의 통합 업데이트에 맞춰 README, 테스트 문서, HTML Help 검색/인덱스 콘텐츠, 생성된 C++ 패키지 산출물을 동기화.
Version 1.16.0
- 새로운 Delphi PrintDialog 데모(Demo/Delphi/PrintDialog) 추가. N-up 인쇄(시트당 1/2/4/9 페이지), 홀수/짝수 페이지 필터링, 그레이스케일 렌더링, 선택적 1픽셀 셀 테두리에 초점. 미리 보기, 최근 파일, 줌, 스케일링을 이미 다루는 기존 PrintPDF 데모의 의도적인 작은 동반자.
Version 1.15.0
- 새 TPdfThumbnailView 컴포넌트(FPdfThumbnail 유닛) 추가. 스크롤 가능한 사이드 패널에 한 행에 한 페이지 썸네일을 렌더링하며 호버 및 선택 하이라이트, 클릭 이동 내비게이션을 지원. TPdfView 옆에 배치하여 최종 사용자가 긴 문서를 페이지별로 탐색할 수 있도록 설계.
- 컴포넌트는 losLab 팔레트 탭에 TPdf, TPdfView와 함께 등록됨. 주요 속성: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor, 그리고 OnPageClick 이벤트.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 112 케이스로, C++Builder 스위트를 97 케이스로 확장. 기본값, 썸네일 크기 라운드 트립, 극단값 클램핑, 색 라운드 트립, 이벤트 핸들러 할당을 커버.
Version 1.14.0
- 새 Delphi BatchExport 데모(Demo/Delphi/BatchExport) 추가. TPdf.LoadCustomDocument로 스트리밍 로드, IPdfCancellationToken으로 협력적 취소, 파일별 전체 + 페이지별 진행률 바를 사용하여 여러 PDF 파일을 한 번에 JPG로 변환하는 방법을 보여줌. 데모는 파일당 하나의 TPdf 인스턴스를 사용(PDFium 자체는 스레드 안전하지 않음)하며, 추출이 성공적으로 끝나면 출력 폴더를 탐색기에서 엶.
Version 1.13.0
- TPdfView에 세 가지 새 속성을 통해 비동기 렌더링 UI 오버레이 추가: AsyncRendering, LoadingText, LoadingColor. AsyncRendering이 True일 때 단일 페이지 paint 경로가 렌더링된 페이지 위에 작은 “Loading...” 인디케이터를 그림. 자체 워커로 장시간 렌더링을 수행하는 애플리케이션이 일관된 시각적 어포던스를 공유할 수 있도록 함.
- 기본값은 기존 동작을 유지: AsyncRendering이 False이므로 옵트인하지 않은 애플리케이션에는 시각적 변화가 없음.
- 문서에 PDFium 자체는 스레드 안전하지 않음을 명시 — 실제로 렌더링을 워커로 오프로딩하려면 호출자가 워커당 하나의 TPdf를 유지해야 함. 곧 출시될 배치 내보내기 데모가 그 패턴을 보여줌.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 106 케이스로, C++Builder 스위트를 93 케이스로 확장. 기본값과 세 속성 라운드 트립을 커버.
Version 1.12.0
- TPdfView에 클릭 기반 링크 처리 추가. 새 LinkOptions 속성은 네 가지 PDF 링크 액션 타입의 자동 동작을 제어: goto(페이지 점프), URI(ShellExecute), launch(ShellExecute), 임베디드 GotoR(예약됨). 기본값은 loAutoGoto와 loAutoOpenURI 활성화. loAutoLaunch와 loAutoEmbeddedGoto는 우발적인 클릭이 임의 프로그램을 실행하지 못하도록 비활성 상태로 유지.
- OnAnnotationLinkClick과 OnWebLinkClick 이벤트 추가. 자동 동작 전에 발생하며 애플리케이션이 링크를 검사하거나 Handled로 표시하거나 (예: 보안 프롬프트로) 리다이렉트할 수 있게 함.
- 링크 클릭 감지는 드래그가 아닌 클릭일 때만 새 MouseDown 앵커를 사용하여 실행되므로 panning 제스처는 기존 스크롤 경로를 변경 없이 그대로 통과.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 102 케이스로, C++Builder 스위트를 91 케이스로 확장. 기본 LinkOptions, set 라운드 트립, 이벤트 핸들러 할당을 커버.
Version 1.11.0
- TPdfView에 시각적 마감 추가. PageShadowSize, PageShadowColor, PageBorderColor 속성이 페이지 사각형 아래에 선택적 드롭 섀도와 한 픽셀 테두리를 그림. 기본값은 기존의 평면 외관을 유지(PageShadowSize = 0; 테두리는 기본 clBlack으로 그려지지만 호출자가 색을 바꾸기 전까지 기본 흰색 배경에 묻힘).
- SmoothScroll 속성을 향후 점진적 스크롤 애니메이션을 위한 옵트인 플래그로 추가. 속성은 오늘 라운드 트립하며 애플리케이션이 선호도를 영속화할 수 있도록 연결되어 있지만 렌더링 측은 여전히 기존의 즉시 스크롤 동작을 사용.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 98 케이스로, C++Builder 스위트를 89 케이스로 확장. 기본값, 속성 라운드 트립, 음의 섀도 크기 클램프를 커버.
Version 1.10.0
- 새 TPdf.AddImage와 TPdfView.AddImage 오버로드를 통한 직접 이미지 삽입 추가. 파일 경로 또는 TBitmap을 받으며 기존 TPicture 기반 AddPicture와 함께 사용 가능. AddImage(FileName)은 VCL 또는 LCL 그래픽 유닛에 등록된 임의의 포맷(BMP, PngImage 유닛을 통한 PNG, JPG 등)을 인식하며 AddPicture와 동일한 파이프라인을 통과하므로 동작이 일치.
- AddImage(TBitmap)은 TPicture 중간자를 건너뜀. 렌더링이나 배치 생성 작업에서 이미 TBitmap을 보유한 호출자에게 단순화된 경로를 제공.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 92 케이스로, C++Builder 스위트를 84 케이스로 확장. 비트맵 삽입, 페이지 객체 경계, nil 비트맵 거부, BMP 파일 로딩을 커버.
Version 1.9.0
- FPdfMatrix 유닛의 새 TPdfMatrix 클래스를 통한 고수준 변환 행렬 지원 추가. TPdfMatrix는 PDFium의 FS_MATRIX를 Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew, Multiply에 대한 OO API로 래핑. FPDFPageObj_SetMatrix와 유사 PDFium API에 전달하기 전에 변환을 합성하는 데 적합.
- TPdfMatrix.Multiply는 새로운 행 값을 계산하기 전에 여섯 개의 행렬 요소를 올바르게 스냅샷. 대체 Pascal 구현이 동일 호출 내에서 이전 요소를 덮어써 단순 translate 이상의 합성에서 부정확한 결과를 내는 잠재 이슈를 수정.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 88 케이스로, C++Builder 스위트를 81 케이스로 확장. identity, reset, translate/scale/flip, post-multiplicative 합성 순서, Multiply 회귀 케이스를 커버.
Version 1.8.0
- 새 TPdf.LoadCustomDocument(AStream, AOwnsStream) 메서드와 TPdfStreamAdapter 헬퍼 클래스를 통한 온디맨드 스트림 로딩 추가. 기반은 PDFium의 FPDF_LoadCustomDocument. PDFium은 이제 공급된 TStream에서 필요할 때만 블록을 읽으므로 매우 큰 PDF나 원격 PDF는 사전 인메모리 복사를 더 이상 요구하지 않음.
- 선택적 스트림 소유권 추가. AOwnsStream = True로 전달하면 TStream의 수명이 TPdf로 넘어가 UnloadDocument 실행 시 자동으로 해제됨.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 79 케이스로, C++Builder 스위트를 75 케이스로 확장. TFileStream을 통한 스트리밍 로드, 소유 스트림 정리, 외부 소유 스트림이 언로드 후에도 살아남는 계약을 커버.
Version 1.7.0
- 새 FPdfAsync 유닛에서 협력적 비동기 취소 프리미티브 추가. IPdfCancellationToken / IPdfCancellationTokenSource와 재사용 가능한 PdfNoCancellationToken 싱글톤을 노출하여 장시간 실행되는 렌더링 및 내보내기 워크플로가 UI에서의 깔끔한 취소 시맨틱을 지원할 수 있음.
- 경량 TPdfFuture<T> 헬퍼 추가. 백그라운드 스레드에서 워커를 실행하고 TPdfFutureResult<T> 봉투를 메인 스레드로 다시 게시하며 성공, 취소, 실패 케이스를 구분.
- Delphi 및 Lazarus 회귀 테스트 스위트를 각각 76 케이스로, C++Builder 스위트를 73 케이스로 확장. 취소 상태, 멱등 cancel, 콜백 fan-out, 취소 후 등록을 공유 커버.
Version 1.6.10
- PDF 뷰어 환경 설정의 인쇄 페이지 범위에 대한 고수준 TPdf.PrintPageRanges 접근 추가. 애플리케이션 코드를 위해 1 기반 페이지 범위를 반환.
- TPdf.SetFormFieldFlags / SetFormFieldFlagsAt 및 대응되는 TPdfView 헬퍼 추가. 애플리케이션이 공개 API를 통해 AcroForm 필드 플래그를 업데이트할 수 있게 되었으며 password 및 multi-select 플래그 커버리지 포함.
- Windows 크기의 FPDF_DWORD, FPDF_FILEACCESS 콜백, V8 embedder slot 필드에 대한 PDFium 바인딩 ABI 커버리지 강화.
Version 1.6.9
- 번들 표준 및 V8 PDFium DLL에서 새로 내보낸 FPDF_RenderPageSkia 및 FPDF_FFLDrawSkia API용 저수준 Skia 렌더링 바인딩 추가.
- 공개 바인딩 커버리지 검사를 확장하여 표준 및 V8 DLL 로딩이 이제 기존 V8/XFA 능력 프로브와 함께 Skia 렌더 진입점을 검증.
Version 1.6.8
- 새로 내보낸 FPDFText_SetPositions API를 통해 기존 텍스트 객체의 문자별 위치를 설정하는 TPdf.SetTextPositions와 TPdfSingleArray 추가.
- FPDFText_SetPositions를 현재 번들 PDFium DLL의 필수 바인딩으로 승격. 동시에 Skia 렌더 진입점은 DLL이 여전히 내보내지 않으므로 계속 사용 불가능함을 확인.
- Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 65 케이스로 확장하여 텍스트 위치 커버리지 포함.
Version 1.6.7
- JavaScriptAction과 JavaScriptActions를 통해 액션 이름과 스크립트를 반환하는 문서 JavaScript name-tree 액션에 대한 고수준 TPdf 접근 추가.
- PDFium 종료 바이트 없이 영구 및 변경 가능한 트레일러 ID를 이진 TBytes로 읽는 TPdf.FileIdentifier 추가.
- 현재 페이지의 MediaBox, CropBox, BleedBox, TrimBox, ArtBox에 대한 TPdf.PageBox, GetPageBox, SetPageBox 추가.
- 해당 내보내기가 존재하지 않기 때문에 현재 번들 PDFium DLL이 Skia 렌더 진입점만 런타임에서 사용 불가능한 상태로 남겨두는 것을 재확인.
- Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 64 케이스로 확장하여 문서 JavaScript, 트레일러 ID, 페이지 박스 커버리지 포함.
Version 1.6.6
- 번들 V8 지원 PDFium DLL에 대한 런타임 지원 추가. 로딩 전에 EnableV8Engine을 설정하면 이제 DLLs\Win32 또는 DLLs\Win64 트리에서 pdfium.v8.dll을 선택하고, 로드된 DLL이 제공할 경우 V8/XFA 전용 바인딩을 노출.
- V8FeaturesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags와 FPDF_BStr_*, FPDF_GetRecommendedV8Flags, FPDF_GetArrayBufferAllocatorSharedInstance에 대한 저수준 선택적 바인딩 추가.
- FPDFText_SetPositions를 선택적으로 만들어 PDFiumVCL이 해당 실험적 텍스트 위치 setter를 내보내지 않는 PDFium DLL에서도 계속 로드되도록 함.
- Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 61 케이스로 확장하여 표준 DLL 및 V8 DLL 능력 커버리지 포함.
Version 1.6.5
- TPdf.StructureElements와 TPdfView.StructureElements를 통한 태그된 PDF 구조 트리 검사 추가. 요소 타입, 제목, 대체 텍스트, 실제 텍스트, expansion 텍스트, 언어, marked-content ID, 자식 수, 속성 수를 포함.
- TPdfPrintMode와 SetPdfPrintMode를 통한 Windows PDFium 인쇄 모드 선택 추가. EMF, 텍스트 전용, PostScript, pass-through, image-mask, Type 42 인쇄 모드를 커버.
- JavaScript 액션, 주석 폼 플래그/폰트 색, 페이지 객체 활성 상태, 인덱스 삽입, content-mark float 값, 이미지 ICC 프로파일 데이터, 폼 객체 제거, 텍스트 위치를 커버하는 표준 DLL의 나머지 PDFium 공개 내보내기에 대한 저수준 바인딩 추가.
- Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 59 케이스로 확장하여 태그된 PDF 구조 트리, 인쇄 모드, 공개 내보내기 바인딩 커버리지 포함.
Version 1.6.4
- Delphi, C++Builder, Lazarus 데모를 업데이트하여 생성된 PDF, 내보낸 텍스트/이미지, 배치 출력 폴더가 성공적으로 생성된 후 자동으로 열리도록 함.
Version 1.6.3
- 정렬된 Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 56 케이스로 확장. fit-zoom 헬퍼, 장치/페이지 좌표 라운드 트립, 문자 hit-testing, 숨겨진 창 뷰어 컨트롤을 통한 마우스 panning에 대한 TPdfView GUI 커버리지 추가.
- TPdfView 픽스처는 이제 명시적인 뷰어 크기와 보호된 마우스 핸들러를 호출하는 테스트 전용 서브클래스를 사용하면서 스위트를 완전히 headless로 유지.
Version 1.6.2
- TPdf.AddPage(0, ...) 수정. 삽입된 첫 페이지가 즉시 활성 페이지가 되도록 함. 기존 샘플 코드는 계속 동작하며, PageNumber는 이제 삽입 후 유효한 1 기반 페이지를 보고함.
- Lazarus 패키지 버전을 동기화하고 정렬된 Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 52 케이스로 확장.
Version 1.6.1
- v1.6.0 PDF 버전 준수 검증기의 잘못된 최소 버전 요구 사항 수정. SetState 액션이 PDF 1.5에서 PDF 1.2로 재분류되어 PDF 1.2 Reference 6.9.9에 일치. SetState 액션을 포함하는 PDF 1.3 / 1.4 SaveAs 타겟이 거부되는 대신 올바르게 저장됨.
- 동일한 사양 섹션에 따라 일치하는 PDF 1.2 어휘 검사 추가. 선택된 타겟 버전이 PDF 1.2 이전일 때 Sound, Movie, NOP 액션과 Separation 색 공간이 차단됨.
- Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 50 케이스로 확장. 수정된 경계를 고정하는 PDF 1.4 SetState 수락 양성 테스트 추가.
Version 1.6.0
- 전체 PDF 1.1부터 ISO 32000-1 기능 타임라인을 커버하는 전체 버전-기능 검증기로 명시적 PDF 1.0부터 PDF 1.7 SaveAs 타겟을 강화. 검증기는 선택된 타겟 버전 이후 도입된 사전 항목, 필터 이름, 주석 서브타입, 액션 타입, 폰트, 색 공간, 암호화 매개 변수를 포함하는 저장을 차단. 예시: JBIG2Decode (1.4+), MarkInfo / Tagged PDF (1.4+), OutputIntents (1.4+), ICCBased / DeviceN / BleedBox / TrimBox / ArtBox / StructTreeRoot (1.3+), Polygon / PolyLine / Caret / Screen / Watermark / Redact 주석, AES 및 AES-256 암호화(CFM AESV2 / AESV3), Perms / Legal / Requirements / NeedsRendering 카탈로그 항목, JavaScript, Trans, SetState, Rendition, GoToE, GoTo3DView 같은 버전 게이트가 있는 액션이 타겟 PDF 버전에서 표현될 수 없을 때 모두 거부됨.
Version 1.5.13
- Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 49 케이스로 확장. PDF 1.2 / 1.3 / 1.4 / 1.5 / 1.6 타겟에 대해 ICCBased 색 공간, Tagged PDF MarkInfo, Polygon 주석, AES (V2) 암호화, Redact 주석의 거부에 대한 직접 커버리지를 각각 추가.
Version 1.5.12
- 증분 카탈로그 재작성을 위한 SaveAs 후처리 수정. PDFiumVCL은 이제 최신 반복된 간접 객체를 검증하므로 명시적인 이전 PDF 타겟 버전으로 저장할 때 기존 카탈로그 /Version 오버라이드가 올바르게 교체됨.
- Delphi, C++Builder, Lazarus 회귀 테스트 스위트를 각각 44 케이스로 확장. 오래된 카탈로그 /Version 교체, PDF 1.4 카탈로그 버전 정규화, 선택된 PDF 타겟 버전이 표현할 수 없는 투명도 및 portable-collection 기능 거부에 대한 직접 커버리지 추가.
Version 1.5.11
- 명시적 PDF 1.3, 1.4, 1.5, 1.6, 1.7 타겟에 대한 버전 지정 SaveAs 출력 강화. PDFiumVCL은 이제 카탈로그 버전 마커를 정규화하고, 기본 Fit Height OpenAction을 버전 안전하게 유지하며, 선택된 타겟 버전이 표현할 수 없는 새 PDF 기능을 거부.
- 명시적 PDF 1.3부터 PDF 1.7까지의 파일을 저장하고 다시 로드하여 최종 헤더, 기본 Fit Height OpenAction, 보고된 PDF 버전을 검증하는 Delphi, C++Builder, Lazarus 회귀 커버리지 추가.
Version 1.5.10
- 모든 세 IDE 스위트(Tests.PdfView)에 TPdfView 스모크 테스트를 추가하여 사양의 옵션 B에서 옵션 C로 진행. 각 스위트는 숨겨진 부모 TForm(Pascal 쪽에서는 TForm.CreateNew를 통해, C++Builder 쪽에서는
new TForm(NULL, 0)을 통해)을 만들고, TPdfView를 다시 부모로 지정한 다음 Active := True를 설정하고, PageCount, PageNumber 기본값, Zoom, Rotation, DisplayMode에 대한 라운드 트립 표면과 View.Text가 기반 TPdf.Text와 일치함을 검증. 각 IDE 스위트는 이제 39 케이스를 실행.
Version 1.5.9
- 모든 세 IDE 스위트에 렌더 스모크 테스트를 추가하여 사양의 옵션 A에서 옵션 B로 진행. 각 Tests.Render 스위트는 sample.pdf에서 TPdf.RenderPage를 호출하고 바이트 대 바이트 체크섬 대신 세 가지 견고한 신호를 검증: 반환된 비트맵이 요청된 픽셀 크기와 정확히 일치, 다른 요청 크기(200x100, 64x256)가 일치하는 비트맵을 생성, 렌더링된 페이지가 안티앨리어싱된 텍스트를 표시하는 50개 이상(Lazarus의 경우 20개)의 비백색 픽셀과 함께 적어도 95% 흰색 배경. 각 IDE 스위트는 이제 33 케이스를 실행.
Version 1.5.8
- IDE별 일곱 개의 회귀를 추가하여 원래 A(2) 테스트 계획 그룹을 마무리: TPdf.CreateAnnotation으로 anHighlight 주석을 구축하고 SaveAs/LoadDocument 라운드 트립, Demo/Delphi/FormFill/cmp_fill_out_and_merge_forms.pdf의 AcroForm 읽기 경로(FormType이 ftAcroForm, FormFieldCount > 0, FlattenAllPages가 필드를 0으로 떨어뜨림), Bookmarks, LinkAnnotationCount, WebLinkCount에 대한 정적 읽기 경로 커버리지(해당 기능이 전혀 없는 문서에서). 각 IDE 스위트는 이제 30 케이스를 실행.
Version 1.5.7
- Delphi (DUnitX), Lazarus (FPCUnit), C++Builder (GoogleTest) 스위트를 IDE별 일곱 개의 새 회귀로 확장: PdfVersion, PageRotation, TPdf.FindFirst / FindNext 부분 문자열 조회, CharacterOrigin / CharacterRectangle와 AddText 원점의 일치, CreateAttachment 등록 + SaveAs/LoadDocument 라운드 트립, 그리고 v1.3.0 European TrueType 임베딩 경로가 Latin-1 supplemental 코드 포인트를 그대로 유지함을 검증하는 강세 텍스트 AddText 라운드 트립.
Version 1.5.6
- 저장된 PDF는 이제 기존 OpenAction이 없을 때 기본 첫 페이지 Fit Height 열기 동작을 가져 PDF 리더가 생성된 문서를 처음 표시할 때 페이지 높이 줌으로 표시함.
- 생성된 OpenAction 및 Fit Height 설정에 대한 Delphi, Lazarus, C++Builder 회귀 커버리지 추가.
Version 1.5.5
- 인덱싱된 문자 및 폰트 검사 API 표면(TPdf.FontBaseName, FontFamilyName, FontWeight, FontItalicAngle, FontData, FontIsEmbedded, CharacterFontWeight, CharacterAngle)을 위한 Delphi (DUnitX), Lazarus (FPCUnit), C++Builder (GoogleTest) 스위트 전반에 걸친 회귀 테스트 추가. Lazarus 스위트는 현재 FPC에서 FPDFFont_GetFontData 내부에서 액세스 위반을 일으키는 FontData를 의도적으로 건너뜀.
Version 1.5.4
- Delphi 샘플에서 포팅된 C++Builder Attachment 데모 추가. PDF 생성, 추가, 나열, 추출, 삭제 및 임베디드 파일 첨부 저장을 MIME 서브타입 표시와 함께 커버.
Version 1.5.3
- TPdfView 2-페이지 모드를 뒷받침하는 spread-page 계산을 유닛 수준 헬퍼 ComputeSpreadPages(DisplayMode, PageNumber, PageCount, out LeftPageNo, out RightPageNo)로 노출. 동작은 변경되지 않음. 헬퍼는 뷰어를 인스턴스화하지 않고도 cover-aware 규칙을 독립적으로 테스트 가능하게 만듦.
- 빈 문서, 표준 2페이지 페어링, dmTwoPageContinuousWithCover에서 단독으로 서 있는 표지, 표지 이후의 페어, 마지막 페이지 / 범위 밖 클램핑 동작을 커버하는 Delphi (DUnitX), Lazarus (FPCUnit), C++Builder (GoogleTest) 스위트 전반에 걸친 다섯 가지 회귀 테스트 추가.
Version 1.5.2
- PDF 카탈로그 /Lang 항목에 매핑되는 TPdf.Language를 통한 문서 언어 지원 추가.
- TPdf.AttachmentType으로 첨부 MIME 서브타입 접근 추가.
- TPdfAnnotationSubtype에 anRedact를 추가하고 TPdf 및 TPdfView에 페이지 객체 제거 헬퍼 추가.
- 새로운 언어 및 첨부 타입 정보를 가능한 경우 표시하도록 뷰어 및 첨부 데모 업데이트.
Version 1.5.1
- TPdfView를 위한 dmTwoPageContinuousWithCover 추가. 뷰어 레이아웃이 첫 페이지를 단독으로 보여주고 그 다음에 2페이지 스프레드로 계속할 수 있도록 함.
- Delphi, C++Builder, Lazarus MultiPageViewer 데모를 업데이트하여 cover-aware 2-페이지 표시 모드를 노출.
Version 1.5.0
- Delphi (DUnitX), Lazarus (FPCUnit), C++Builder (GoogleTest)용 스모크 수준 자동화 테스트 스위트 추가. 세 스위트는 Tests\TestData에 단일 픽스처 PDF를 공유하고 동일한 일곱 케이스를 각각 실행하여 문서 로딩, 페이지 정보, 텍스트 추출, 메타데이터, 저장 라운드 트립, PDF 헤더 검증, Compressed 속성을 커버.
Version 1.4.3
- 폰트 핸들, 폰트 데이터 크기, 문자 메트릭을 포함하여 TPdfView와 TPdf 폰트 메타데이터 API를 모두 보여주는 FontProperties 데모 개선.
- 인덱싱된 TPdfView 문자 및 폰트 검사 속성 추가 및 텍스트 객체 폰트 메타데이터를 조회하도록 FontProperties 데모 업데이트.
Version 1.4.2
- 뷰어 없이 텍스트 분석을 위한 TPdf의 인덱싱된 문자 및 폰트 검사 속성 추가. 문자 인덱스 속성(CharacterAngle, CharacterFontSize, CharacterFontWeight)은 현재 페이지의 텍스트 스트림에서 문자별 메트릭을 조회. 페이지 객체 인덱스 속성(FontAscent, FontBaseName, FontData, FontDescent, FontFamilyName, FontHandle, FontIsEmbedded, FontItalicAngle, FontWeight)은 현재 페이지의 임의 텍스트 객체에 대한 폰트 메타데이터를 조회.
- 비텍스트 페이지 객체는 오류를 일으키지 않고 모든 Font* 속성에 대해 안전한 0 또는 빈 값을 반환하므로 모든 페이지 객체를 반복하면서 텍스트 객체만 검사하는 것이 간단해짐.
- FontBaseName은 폰트 패밀리 이름으로 폴백하는 대신 PostScript 베이스 폰트 이름을 직접 읽어 임베디드 폰트에 대해 더 정확한 식별자를 제공.
Version 1.4.1
- 지원되는 모든 IDE 패밀리가 시스템 TrueType 폰트로 강세 European 텍스트 생성을 검증할 수 있도록 EuropeanText 데모의 C++Builder 및 Lazarus 버전 추가.
- 샘플 폼 PDF, 필드 편집, 외관 재생성, 채워진 저장, 평탄화 저장 워크플로를 포함하여 FormFill 데모의 C++Builder 및 Lazarus 버전 추가.
Version 1.4.0
- Lazarus / Free Pascal 지원 추가. 새로운 PDFiumLaz 패키지가 LCL 위젯 셋 아래에서 동일한 TPdf, TPdfView 및 관련 컴포넌트를 제공. 기존 Delphi 및 C++Builder 패키지와 더불어 라이브러리를 Lazarus IDE 및 Free Pascal 컴파일러로 확장.
- Lazarus 개발자가 실행 가능한 예제로 모든 기능을 탐색할 수 있도록 Lazarus 버전의 데모 추가.
- Delphi 컴파일러 버전 검사와 함께 Free Pascal 조건부 정의가 평가되어 FPC 빌드가 Delphi 전용 유닛 이름을 해석하려 시도하다가 실패하던 Lazarus 컴파일 이슈 수정.
Version 1.3.1
- 도움말 세트에서 폼 평탄화 워크플로 문서화. GenerateFormAppearances, FlattenPage, FlattenAllPages 및 관련 FLAT_* / FLATTEN_* 상수가 이제 TPdf, TPdfView, API 참조, 기능 매트릭스, 프로그래밍 예제에서 다뤄짐.
- 개요 페이지의 아키텍처 표를 수정하여 Lib 폴더에 실제로 함께 제공되는 바인딩 유닛을 나열하도록 함.
Version 1.3.0
- PDF 생성 시 European 문자 지원 개선. TPdf.AddText는 이제 텍스트 객체를 생성하기 전에 일치하는 시스템 TrueType 폰트를 로드하고 캐시하여 PDFium의 내장 표준 폰트가 표현할 수 없는 체코어, 프랑스어, 독일어, 스페인어, 포르투갈어, 폴란드어, 터키어의 강세 문자를 보존.
- 이전에 비 ASCII 라틴 텍스트에 대해 물음표 또는 대체 글리프를 생성하던 애플리케이션이 이제 코드 변경 없이 올바르게 렌더링됨. 기능을 시연하는 EuropeanText 데모 추가.
Version 1.2.0
- TPdf에 AcroForm 외관 새로 고침 추가. FormField[] 값을 수정한 후 GenerateFormAppearances를 호출하면 위젯 외관이 업데이트되므로 대화형 편집 세션 없이도 표준 PDF 리더에서 채워진 값이 보임.
- TPdf(FlattenPage / FlattenAllPages)와 TPdfView(현재 뷰 페이지용 FlattenPage)에 폼 평탄화 헬퍼 추가. 평탄화는 채워진 필드 값을 일반 페이지 콘텐츠로 영구 임베드하고 대화형 폼 레이어를 제거하여 모든 뷰어에서 일관되게 렌더링되는 정적 문서를 생성.
- 샘플 AcroForm PDF로 채우기-저장 및 채우기-평탄화 워크플로를 시연하는 Demo\Delphi\FormFill 추가.
Version 1.1.2
- 저장 시점의 PDF 스트림 압축 추가. 새 TPdf.Compressed 속성(기본 활성화)이 저장 시 압축되지 않은 콘텐츠 스트림을 FlateDecode 압축 스트림으로 재작성하여 프로그램으로 생성된 PDF의 파일 크기를 상당히 줄임. 일반 압축되지 않은 출력이 필요한 애플리케이션은 SaveAs를 호출하기 전에 Compressed를 False로 설정 가능.
Version 1.1.1
- Win64 패키지 빌드는 더 이상 디자인 타임 등록 유닛을 포함하지 않음. Win64 패키지가 런타임 전용 컨텍스트에 배포될 때 빌드 타임 실패를 방지.
- PDFium DLL 로더는 이제 표준 pdfium.dll 및 pdfium.v8.dll 이름을 사용하여 먼저 Win32 또는 Win64 애플리케이션 하위 디렉터리를 검색하고, 그다음 애플리케이션의 flat 디렉터리와 Windows 시스템 디렉터리로 폴백. 이는 컴포넌트 패키지에 함께 제공되는 DLL 레이아웃과 일치하여 설치를 간단하게 만듦.
Version 1.1.0
- TPdfView 2-페이지 모드의 시각적 클리핑 결함 수정. 좌우 페이지 타일이 단일 클리핑 사각형을 공유했기 때문에 페이지 콘텐츠가 거터를 넘어 새어 나가던 문제. 이제 각 타일이 독립적으로 클리핑되어 콘텐츠가 자신의 페이지 경계 안에 머무름.
- Delphi 데모에서 PDFium DLL을 찾을 수 없을 때의 오류 메시지 개선. 예상되는 DLL 이름과 위치로 명확한 프롬프트를 제공.