HotPDF Release Notes
Version history for HotPDF user-visible features, fixes, compatibility updates, and documentation changes
Note: Only the latest 500 change records are kept
Last release
- Latest version: 2.415.0; Release date: 2026-07-12
Version 2.415.0
추가됨
HPDFParsePDFDate이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가+HH’mm,-HH’mm, orZ이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가TDateTime;HPDFFormatPDFDate이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가D:YYYYMMDDHHmmSS+00’00GetLoadedExtGStateInforeadsLW/LC/LJ/ca/CA이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedShadingCount/GetLoadedShadingNameandGetLoadedPatternCount/GetLoadedPatternNameenumerate the/Shadingand/Patternresource sub-dictionariesReplaceLoadedPage이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가SwitchLoadedPagesexchanges two pages,ReverseLoadedPages이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가ExtractLoadedPagesToPDF이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedPageInheritedBox이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedFileSpecInfo이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedEmbeddedFileMIMEreturns the/Subtype,GetLoadedEmbeddedFileChecksumreturns the/Checksumdigest, andTHPDFNameTreeType+GetLoadedNameTreeRootCount이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가HPDFEnablePerMonitorDPIdynamically enables per-monitor DPI awareness;THPDFBackgroundRenderer이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedPageContentStreamCountreports whether/Contents이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedXMPValue이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedDocumentReport이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가
Version 2.414.0
추가됨
THPDFActionBuilder.URIWithIsMap이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가/IsMap true이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가URI이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가/URIstringAddLoadedCaretAnnotationEx이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가/Sy P이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가GetLoadedAnnotationDA이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가/DA이 릴리스는 나열된 기호를 통해 설명된 API 동작과 지원을 추가
Version 2.413.2
수정됨
- 이 릴리스는 나열된 기호에 대한 API 동작과 지원을 동기화
Version 2.413.1
Fixed
- Type1 and CFF font handling now preserves parser ownership across repeated stream checks and multi-font FontSets, returns stable glyph names and bounding boxes, keeps fractional font sizes and DPI scaling, and avoids composite-glyph and private-dictionary memory errors
- The C++Builder AddDelPages, HugeFileBenchmark, and Security demos now compile for Win64, while page-operation and preflight examples release partially constructed objects safely
Version 2.413.0
Changed
- The Delphi E-Invoice demo now validates required invoice fields, amount and VAT ranges, currency syntax, and embedded XML profile compatibility before writing output
- The attach workflow now rejects identical source and output paths, reports the detected XML guideline, and combines container, PDF/A, XML profile, signature, visual consistency, Schematron, and external-report checks into one verdict
Fixed
- E-Invoice generation and manual validation no longer report a successful result when an enabled validation layer finds issues
- Loaded electronic-invoice summaries now read the invoice number, seller, and buyer from their correct XML aggregates, preventing false visible-text consistency findings
Version 2.412.0
Changed
- All Delphi demos now resolve no-argument relative assets and outputs from their executable directory while preserving the caller working directory for command-line paths
- Delphi command-line demos now provide stricter argument validation, failure exit codes, deterministic comparison inputs, and generated-document verification across page copying, text extraction, preflight, optimisation, inspection, and in-memory workflows
Fixed
- Delphi demos no longer risk page-list overflow above 100 selected pages, create an extra blank page in the add-page workflow, close unrelated PDF viewer windows, or report failed preflight checks as successful
- The E-Invoice attach workflow now rebuilds its current page correctly when a single-page source is converted, signed, and stripped of the temporary initial blank page
Version 2.411.0
Added
- E-Invoice demo: new "Attach to existing PDF" mode converts an existing PDF to PDF/A-3, embeds a Factur-X/ZUGFeRD invoice XML as a document-level attachment, and optionally signs the result with a PFX certificate
Version 2.410.0
Added
- Loaded AcroForm fields can now update flags, maximum length, text justification, per-widget rectangles, rotation, border colour, and visible or printable state, with widget enumeration for radio groups and other multi-widget fields
Fixed
- Loaded field tooltip, border-width, and background-colour edits now mark the correct field or widget dictionaries dirty, apply visual properties to every widget, and invalidate only the affected page render cache
Version 2.409.0
Added
ActivateLoadedLinksturns bare HTTP, HTTPS, FTP,www.,mailto:, and email text into positioned borderless URI annotations across a selected page range
Changed
- Loaded link creation now persists reliably in incremental updates, while automatic activation snapshots existing links once per page, skips matching URI and rectangle pairs, and invalidates each changed page cache only once
Version 2.408.0
Added
- 로드된 주석은 이제 제목, 고유 이름, 수정 날짜, 정규화된 사각형 및 표준 실선, 점선, 경사선, 삽입선 또는 밑줄 테두리 스타일을 업데이트할 수 있음
Fixed
- 로드된 주석 편집 시 증분 저장을 위해 주석 객체를 dirty 상태로 표시하며, 시각적 편집 시 영향을 받는 페이지의 캐시된 렌더링만 무효화하고 다른 활성 페이지는 유지함
Version 2.407.0
Added
THPDFViewerModel은 PDF를 수정하지 않고 지속적인 페이지 영역 하이라이트를 저장, 클리핑, 열거, 제거 및 지움THPDFViewer는 캡처된 마키 드래그, 회전 인식 PDF 좌표 복구, 구성 가능한 색상 및OnMarqueeSelect콜백이 포함된 하이라이트 상호작용 모드를 추가함
Fixed
- 뷰어 좌표 변환은 이제 12 미만 및 2400 초과의 실제 렌더 DPI를 유지하여 5% 및 6400% 배율 제한에서 선택 영역이 정렬되도록 유지함
Version 2.406.0
Added
THPDFViewerModel은 호출자가 제공한 픽셀 경계에 대해 선택된 DPI에서 직접 회전 인식 페이지 썸네일을 생성하여 전체 크기의 중간 페이지 비트맵을 방지함- 뷰어 모델 페이지 프리페치는 예약된 페이지를 렌더링된 페이지 캐시 용량으로 제한하면서 중앙 주변 영역을 비동기식으로 사전 로드함
Version 2.405.0
Added
THPDFPageLayout은 이제 자동 버전 협상 및 엄격한 버전 폴백과 함께 PDF 1.5의plTwoPageLeft및plTwoPageRight커버 스프레드 레이아웃을 지원함
Fixed
BeginDoc는 이제 항상plOneColumn으로 대체하는 대신 호출자가 선택한 페이지 레이아웃을 보존함
Version 2.404.0
Added
THPDFViewerModel은 전체 페이지 비트맵을 할당하지 않고 경계가 지정된 PDF 페이지 영역의 회전 인식 스냅샷을 생성함
Version 2.403.0
Added
THPDFViewerModel은 호출자가 선택한 DPI에서 PDF 페이지 공간과 회전 인식 뷰어 좌표 간에 포인트를 양방향으로 변환함
Version 2.402.0
Changed
- 뷰어 줌 명령은 이제 임의의 사용자 지정 값에 대한 가역적 탐색을 포함하여 5%에서 6400%까지 안정적인 표준 레벨을 사용함
Version 2.401.0
Added
THPDFViewer는 스크롤 전용 입력에 대해 다시 렌더링하지 않고 Ctrl+휠 줌, 수직 휠 스크롤 및 Shift+휠 수평 스크롤을 추가함
Version 2.400.0
Added
THPDFViewer는 키보드 페이지 탐색, 스크롤, 줌 단축키 및 실제 크기, 너비 맞춤 또는 페이지 맞춤 모드 선택을 추가함
Version 2.399.0
Added
THPDFViewer는 결정론적 종횡비 보존 맞춤 및 중앙 배치를 사용하여 회전 인식 현재 뷰를 그리거나 인쇄함
Version 2.398.0
Added
THPDFViewerModel은 비파괴적인 90도 뷰 회전을 포함하여 로드된 페이지 또는 현재 뷰의 호출자 소유 벡터 EMF 스냅샷을 생성함
Version 2.397.0
Added
THPDFViewerModel은 구성 가능한 JPEG 품질과 함께 회전 인식 페이지 스냅샷을 BMP, JPEG 또는 PNG 형식으로 파일 및 호출자 소유 스트림에 저장함
Version 2.396.0
Added
THPDFViewer.ResetView는 현재 페이지를 유지하면서 실제 크기를 복원하고 뷰 회전 및 검색 하이라이트를 지우며, 일치하는 재설정 및 회전 액션과 배치된 단일 렌더링 업데이트를 제공함
Version 2.395.0
Added
THPDFViewer및THPDFViewerModel은 PDF 페이지를 변경하지 않고 호출자 소유 페이지 스냅샷에도 적용되는 시계 방향, 시계 반대 방향 및 재설정 가능한 뷰 회전을 추가함
Version 2.394.0
Added
THPDFViewerModel은 Viewer 컨트롤을 구축하지 않고도 호출자 소유 페이지 스냅샷을 생성하고 현재 페이지를 BMP로 저장할 수 있음
Version 2.393.0
Added
THPDFLoadedFormField는 이제 필드 플래그, MaxLen, 페이지 인덱스, 위젯 경계 및 공통 필수(Required), 내보내지 않음(NoExport), 다중행(Multiline), 비밀번호(Password) 상태를 노출함GetLoadedFormFieldMaxLength는 로드된 텍스트 필드 길이 제한에 대한 직접 인덱스 액세스를 제공함
Version 2.392.0
Added
SetDocumentAttachmentMetadata는 문서 수준의 내장 첨부파일 이름을 변경하고 직렬화하기 전에 설명을 업데이트함
Version 2.391.0
Added
ExtractLoadedPagesTextToStream은 선택된 로드된 페이지 텍스트를 사용자 정의 구분 기호 및 선택적 BOM 출력과 함께 UTF-8로 스트리밍함THPDFViewerModel은 페이지 위젯 간의 양식 필드 히트 테스트 및 결정론적 키보드 탐색을 추가함THPDFSignatureInfo.CertificateTimeValidity는 인증서 바인딩 및 서명 시간 유효성 분류를 보고함
Fixed
- 위젯
/P역참조가 없는 로드된 양식 필드는 이제 페이지 주석 배열을 통해 매핑할 수 있음
Version 2.390.0
Added
THPDFWatermarkTemplate.MakeCurve및THPDFPage.AddCurveWatermark는 로드된 컴포지트 및 새 문서 작성에 3차 베지에 곡선을 추가함
Fixed
- 로드된 문서 메타데이터 설정기는 이제 증분 저장이 제목 및 작성자 변경 사항을 보존하도록 Info 사전을 dirty 상태로 표시함
Version 2.389.0
Added
InsertLoadedBlankPage는 정확한 로드된 문서 위치에 호출자가 정의한 치수의 빈 페이지를 삽입함ExtractLoadedPagesText는 호출자가 정의한 구분 기호와 함께 1부터 시작하는 페이지 범위의 텍스트를 집계함GetLoadedFormFieldNameValuePairs및SetLoadedFormFieldNameValuePairs는TStrings를 통해 배치name=value양식 교환을 제공함CMapResourcePath는 서비스, 플러그인 및 사용자 정의 애플리케이션 레이아웃에 대한 명시적인 표준 CMap 배포 경로를 지원함
Changed
- VCL 뷰어는 이제 검색 히트 사각형을 그리고 현재 페이지에서 활성 히트가 변경될 때 새로 고치며, 링크된 아웃라인 컨트롤은 뷰어 문서 변경 사항을 따름
- 페이지 렌더링은 이제 상속된 미디어 상자, 회전 및 리소스를 분석하고 모든 직각 회전에서 0이 아닌 페이지 원점을 올바르게 매핑함
Fixed
- 병합 이름 변경이 비활성화된 경우 페이지 삽입 또는 추가가 시작되기 전에 양식 이름 충돌이 거부되어 대상 페이지 수가 변경되지 않은 상태로 유지됨
- 로드된 페이지를 삭제하면 삭제된 페이지에 대한 참조를 남겨두는 대신 AcroForm 위젯 필드를 분리하고 빈 필드 트리 분기를 제거함
- 커서 스타일 검색 도우미 및 뷰어 모델 미스는 이제 원시 메모리 작업으로 관리되는 텍스트 일치 레코드를 지우지 않음
- 자동 CMap 검색은 이제 실제 컬렉션 루트를 텍스트 디코더에 전달함
Version 2.388.0
Added
- 새로운
DeletePages는 로드된 PDF에서 1부터 시작하는 페이지 범위를 제거하고, 중복되는 선택 영역을 중복 제거하며, 진행 상황을 보고하고, 저장을 위해 유효한 페이지 트리를 재구성함 - 페이지 삽입 및 추가 병합은 이제 재귀 아웃라인을 복사하고, 가져온 AcroForm 필드를 등록하며, 충돌하는 필드 이름을 결정적으로 변경하기 위해
THPDFMergeOptions를 수락함 - 새로운
AddLoadedRadioButton은 하위 위젯, 공유 내보내기 값 및 완전한 on/off 모양 상태를 갖는 진정한 부모 라디오 필드를 생성함 - 새로운
SearchLoadedNext는 상태 비저장 페이지 로컬 다음 일치 검색을 제공하고,GetLoadedOutlineEntries는 부모 및 레벨 데이터를 포함하는 완전한 재귀 아웃라인 스냅샷을 반환함 - 새로운 Windows 인증서 저장소 서명 오버로드는 SHA-1 지문으로 현재 사용자 또는 로컬 시스템 인증서를 선택하고 CNG 또는 레거시 CSP 개인 키를 통해 서명함
- 새로운
THPDFLoadedDocumentFacade는 변형 및 추출 도우미가 포함된 유형의 아웃라인, 양식, 주석, 글꼴 및 이미지 컬렉션을 노출함 - 새로운
THPDFViewer,THPDFSearchPanel,THPDFOutlineViewer, 뷰어 모델 및 뷰어 액션 클래스는 재사용 가능한 VCL 페이지 표시, 탐색, 줌, 검색 및 북마크 컨트롤을 추가함 - 새로운 고급 인쇄, 서명 유효성 검사, 페이지 썸네일, 로드된 이미지 내보내기 및 유형이 지정된 로드된 문서 검사 데모는 엔드투엔드 워크플로우를 처리함
Changed
- 로드된 문서 인쇄는 이제 결정적인 한 부씩 인쇄되거나 한 부씩 인쇄되지 않는 물리적 페이지 시퀀스를 구축하고, 사용자 정의 용지 너비 및 길이를 지원하며, 프린터 용지 코드, 이름 및 크기를 보고함
- 시스템 인증서 열거는 이제 SHA-1 지문, 개인 키 가용성, 유효 날짜 및 키 사용 메타데이터를 포함함
Fixed
- 로드된 텍스트 검색 결과 증가 시 더 이상 원시 메모리 이동으로 관리되는 문자열 레코드를 복사하지 않아 Win64에서 유효하지 않은 포인터 오류가 발생하는 것을 방지함
- 로드된 페이지를 삭제해도 더 이상 공유 페이지 리소스를 해제하지 않거나 저장 및 다시 로드 후에 다시 나타나는 부실한 페이지 트리 수를 남겨두지 않음
Version 2.387.0
Added
- 새로운
PrefetchLoadedPages는 백그라운드 작업자 스레드에서 페이지 범위를 렌더링된 페이지 캐시로 렌더링하여 페이지를 넘기는 뷰어가 각 렌더링을 기다리는 대신 즉시 웜 캐시 히트를 얻도록 함 CancelLoadedPagePrefetch는 작업자를 중지하고IsLoadedPagePrefetchActive는 해당 상태를 보고함. 다른 문서를 로드하거나 컴포넌트를 파괴하면 활성 프리페치가 자동으로 취소됨- 캐시된 렌더링과 프리페치 작업자는 내부적으로 직렬화되므로 프리페치가 실행되는 동안에도
RenderLoadedPageToBitmapCached를 안전하게 호출할 수 있음
Version 2.386.0
Added
- 새로운
FlattenLoadedAnnotations는 각 주석의 일반 모양을 해당 사각형의 페이지 콘텐츠에 영구적으로 그리고 주석을 제거하여, 주석을 숨기거나 편집할 수 없는 뷰어에서도 마크업 및 양식 비주얼이 유지되도록 함 - 이 패스는
/AS를 통해 모양 상태 사전을 따르고, 사각형을 맞출 때 모양 바운딩 박스 및 행렬을 존중하며, 하나의 주석 하위 유형 또는 페이지 범위로 제한될 수 있음
Version 2.385.0
Added
- 새로운
RenderLoadedPageRegionToBitmap은 요청된 DPI에서 페이지의 선택된 사용자 공간 창만 래스터화하므로, 매우 큰 페이지를 하나의 오버사이즈 비트맵 대신 높은 해상도의 제한된 메모리에서 타일별로 렌더링할 수 있음 - 타일이 정확하게 정렬됨: 비트맵은 요청된 영역을 정확하게 커버하므로 인접한 타일이 이음새 없이 전체 페이지로 재조립됨
Version 2.384.0
Added
- 새로운
GenerateLoadedPageThumbnails는 로드된 문서의 선택된 페이지를 렌더링하고 이를 JPEG 페이지 썸네일(뷰어 페이지 패널에 표시되는 미리보기)로 내장함. 가장 긴 가장자리 크기와 JPEG 품질은 구성 가능하며 기존 썸네일은 제자리에서 대체됨 GetLoadedPageThumbnailSize는 내장된 썸네일의 픽셀 크기를 다시 읽고,ClearLoadedPageThumbnails는 선택된 페이지에서 썸네일을 제거함
Version 2.383.0
Added
EnumLoadedPageElements는 이제 텍스트 런 및 이미지와 함께 벡터 경로 요소를 보고함: 각각의 그려진 경로는 사용자 공간 바운딩 박스, 그리기 연산자(획, 채우기 또는 둘 다), 유효한 채우기 및 획 색상, 세그먼트 수를 가진 요소를 생성함- 경로 워커는
q/Q중첩 및cm변환을 따르므로 배율 조정되거나 평행 이동된 블록 내부에서 그려진 모양이 실제 페이지 좌표를 보고함
Version 2.382.0
Added
THPDFPrintOptions는 작업이 시작되기 전에 프린터 장치 모드로 푸시되는Duplex(단면, 긴 가장자리, 짧은 가장자리),PaperBin및PrintQuality필드를 획득함. 이제 명시적인Orientation값도 적용됨- 새로운
HPDFGetInstalledPrinters는 시스템 프린터를 나열하고,HPDFGetPrinterCapabilities는 프린터의 이중 및 컬러 지원, 최대 복사 매수, 용지 공급함(PaperBin에서 허용하는 코드 포함) 및 지원되는 해상도를 보고함
Version 2.381.0
Added
- 새로운
CopyLoadedOutlinesFromDocument는 호출자가 제공한 오프셋만큼 모든 대상 페이지를 다시 매핑하면서 제목, 중첩, 형제 순서 및 대상 뷰 매개변수를 유지하면서 다른 로드된 문서의 전체 북마크 트리를 현재 문서에 병합함. 이는 페이지 추가 병합의 동반 기능으로 결합된 문서가 두 북마크 세트를 모두 유지하도록 함
Fixed
GetLoadedBookmarkPageIndex는 이제 첫 번째 최상위 항목을 넘어서 중첩된 레벨 내부의 북마크를 찾음. 이전 조회는 우연히 나중에 나오는 북마크만 일치시켰음
Version 2.380.0
Added
- 새로운
ImposeLoadedPagesNUp은 모든 페이지 범위를 판독 순서대로 격자 시트(임의의 열별 행 배열, 구성 가능한 시트 크기 및 여백)에 배치하고, 선택적 가로세로 비율 보존과 함께 각 페이지를 해당 셀로 조정함 - 새로운
ImposeLoadedPagesBooklet은 중정철 제본 책자 시트를 생성함: 페이지는 4의 배수로 채워지고 책자 순서로 쌍을 이루어 양면 인쇄 및 접기를 통해 올바른 순서의 책자가 생성됨 - 두 임포지션 호출은 모두 소스 페이지를 Form XObject로 래핑하고 기존 페이지 뒤에 완성된 시트를 추가하여 시트 수를 반환함
Fixed
- 로드된 페이지 렌더링은 이제 리소스
/XObject하위 사전에 대한 간접 참조를 따름. 리소스가 별도의 객체로 수신된 페이지는 이미지와 양식을 경고 없이 건너뛰었음
Version 2.379.0
Added
SaveLoadedPagesAsImages는 두 가지 TIFF 형식을 획득함:ifTIFF는 페이지당 하나의 단일 페이지 TIFF 파일을 작성하고,ifTIFFMulti는 전체 페이지 범위를 하나의 다중 페이지 TIFF로 집계하여 TIFF 출력을 기존의 BMP, JPEG, PNG, EMF 및 WMF 선택 항목과 통합함- 두 TIFF 경로는 모두 이미지 해상도 태그에서 요청된 렌더링 DPI를 존중하고 손실 없는 Deflate 압축을 사용함
Version 2.378.0
Added
- 로드된 페이지 렌더링은 이제 현재 스트로크 색상과 선 두께를 사용하여 내장 글꼴과 시스템 글꼴 대체 모두에 대해 실제 글리프 윤곽선으로 텍스트 렌더링 모드 1(획) 및 2(채우기 후 획)를 그리며, 클리핑 변형 4~7은 기본 모드처럼 칠해짐
Fixed
- 12개의 단일 피연산자 콘텐츠 연산자(
Tc,Tw,Tz,TL,Ts,Tr,w,J,j,M,ri,i)가 잘못된 토큰 위치에서 피연산자를 읽고 항상 0을 적용했던 문제를 수정함; 문자 및 단어 간격, 수평 배율, 행간, 텍스트 상승, 렌더링 모드, 선 두께, 캡, 조인 및 미터 한계가 이제 로드된 페이지를 렌더링할 때 적용됨
Version 2.377.0
Added
- 로드된 페이지 렌더링은 이제 선택적 콘텐츠(레이어) 가시성을 존중함:
BDC /OC표시 섹션 내부의 콘텐츠와/OC항목이 포함된 XObject는 문서의 기본 구성(/BaseState,/ON,/OFF)에 따라 해당 레이어가 꺼져 있을 때 숨겨짐 - 선택적 콘텐츠 멤버십 사전은 멤버 그룹에 대해
/P정책(AnyOn,AllOn,AnyOff,AllOff)을 평가함 - 로드된 문서에 새로운 레이어 API가 추가됨: 렌더링을 위한 레이어 상태를 검사하고 재정의할 수 있는
GetLoadedOptionalContentGroupCount,GetLoadedOptionalContentGroupName,GetLoadedOptionalContentGroupVisible및SetLoadedOptionalContentGroupVisible이 추가되었으며, 재정의 시 렌더링된 페이지 캐시가 자동으로 무효화됨
Version 2.376.1
Fixed
- 로드된 페이지 비트맵 렌더링은 이제 이미지 XObject를 그림: 이전의
Do,gs및sh리소스 조회 시 슬래시 접두사가 붙은 피연산자 이름을 누락하여 객체를 아무런 표시 없이 건너뛰었던 문제를 수정함 cm연산자와 Form XObject/Matrix값이 이제 올바른 순서로 연결되므로, 평행 이동 후 배율 조정 배치 시퀀스(표준 이미지 위치 지정 관용구)가 콘텐츠를 의도한 페이지 위치에 배치함
Version 2.376.0
Added
- 새로운
RegisterExponentialFunction,RegisterStitchingFunction및RegisterPostScriptFunctionAPI는 함수 참조가 허용되는 곳마다 사용할 수 있는 독립형 Type 2, Type 3 및 Type 4 함수 객체를 생성함(셰이딩, 하프톤 스폿 및 전송 함수, 색조 변환) RegisterPostScriptFunction은 등록 시 시험 평가를 통해 계산기 프로그램을 검증하므로 잘못 구성된 프로그램이 뷰어에서 경고 없이 성능 저하를 일으키는 대신 즉시 거부됨- 새로운
RegisterSeparationFunc는 호출자가 제공한 색조 변환 함수 객체를 사용하여 Separation 색상 공간을 생성함
Fixed
- 1개 또는 3개 구성 요소 출력을 갖는 Type 2(지수) 색조 변환을 렌더링할 때 더 이상 검은색으로 칠하지 않음; 기존에는 4개 구성 요소(CMYK) 출력만 올바르게 디코딩되었음
- Type 3(스티칭) 색조 변환 렌더링은 이제 임의 개수의 하위 함수를 지원하고,
/Encode재매핑을 적용하며, 단일 항목/Bounds배열을 수락함
Version 2.375.0
Added
- 페이지 렌더링은 이제 Type 4(PostScript 계산기) 색조 변환 함수를 평가하므로, 계산기 프로그램에 의해 구동되는 Separation 및 DeviceN 색상과 그래디언트 셰이딩이 회색 자리 표시자 대신 실제 색상을 렌더링함
- 계산기 평가기는 산술, 비교, 부울 및 비트 연산, 스택 조작,
if/ifelse조건문을 포함하는 완전한 ISO 32000-1 7.10.5 연산자 세트를 다룸
Fixed
- 로드된 페이지 렌더링 시 명명된 색상 공간 선택(
cs/CS연산자)은 이제 리소스 이름을 올바르게 해석함; 이전에는 조회가 실패하여 콘텐츠가 기본 색상 공간으로 대체되었음 - 로드된 페이지 렌더링은 이제 독립형 객체로 저장된
/Separation및/DeviceN정의와 같이 배열 값을 가진 색상 공간에 대한 간접 참조를 따름
Version 2.374.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제
<defaultappearance>자식 및 PDF 주석DA항목을 통해 캐럿 주석 기본 모양 데이터를 보존함
Version 2.373.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제
fringe속성 및 PDF 주석RD항목을 통해 캐럿 주석 가장자리 형성을 보존함
Version 2.372.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제
rotation속성 및 PDF 주석Rotate항목을 통해 고무 도장 주석 회전을 보존함
Version 2.371.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제
inreplyto,replyType및 PDF 주석IRT및RT항목을 통해 텍스트 주석 회신 관계를 보존함
Version 2.370.0
Added
- 수평 스크롤이 비활성화된 XFA 숫자, 날짜-시간 및 비밀번호 필드는 이제 PDF 스크롤 안 함 플래그가 있는 AcroForm 텍스트 위젯으로 플랫화됨
Version 2.369.0
Added
- 스크롤 정책이 비활성화된 XFA 텍스트 필드는 이제 PDF 스크롤 안 함 플래그가 있는 AcroForm 텍스트 위젯으로 플랫화됨
Version 2.368.0
Added
multiLine="1"속성이 있는 XFA 텍스트 필드는 이제 PDF 다중 줄 플래그가 있는 AcroForm 텍스트 위젯으로 플랫화됨
Version 2.367.0
Added
- XFA 하위 폼 액세스 제한은 이제 하위 위젯으로 상속되어 상위 요소가
readOnly,protected또는nonInteractive일 때 생성된 AcroForm 필드가 읽기 전용으로 유지됨
Version 2.366.0
Added
- XFA 선택 목록 플랫화는 이제 생성된 선택 필드에 대해
commitOn="select"를 AcroForm의 선택 변경 시 커밋 플래그로 매핑함
Version 2.365.0
Added
- XFA 선택 목록 플랫화는 이제
open="always"목록을 드롭다운 콤보 상자 대신 단일 선택 AcroForm 목록 상자로 매핑함
Version 2.364.0
Added
- XFA 선택 목록 플랫화는 이제 옵션 목록 외부의 입력된 값을 보존하면서
textEntry="1"콤보 목록을 편집 가능한 AcroForm 콤보 상자로 매핑함
Version 2.363.0
Added
- XFA 선택 목록 플랫화는 필드가 별도의 표시 및 저장 값 옵션 목록을 가질 때 이제
<items save="1">값을 선호함
Version 2.362.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제 PDF 주석
Q및IT항목을 통해 FreeTextjustification및tail속성을 보존함 - JBIG2 문서 기본값은 이제 손실 레벨, 격리된 검은색 픽셀 정리 및 검은색 점 크기에 대해 문서화된 스캔 친화적인 설정과 일치함
Version 2.361.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제
leaderLength,leaderExtended,caption,leader-offset,caption-style, 캡션 오프셋 값 및 호환 가능한 XFDF 파일에서 사용하는 가져오기 측leaderExtend철자를 포함하여 표준 선 리더 및 캡션 속성을 보존함
Version 2.360.0
Added
- XFA 플랫화는 이제 숨겨진 컨테이너의 하위 요소를 포함하여
presence="hidden",presence="invisible"또는presence="inactive"에 의해 가려진 필드 및 정적 그리기 출력을 억제함
Version 2.359.0
Added
- XFA 플랫화는 이제 필드 수준의
access="readOnly",access="protected"및access="nonInteractive"제한을 생성된 AcroForm 읽기 전용 플래그로 매핑함
Version 2.358.0
Added
- XFA 플랫화는 생성된 AcroForm 목록 상자에 PDF 다중 선택 플래그를 설정하여
<choiceList open="multiSelect">의미 체계를 보존함
Version 2.357.0
Added
- XFA 플랫화는 이제
<ui><passwordEdit>필드를 PDF 비밀번호 플래그가 있는 AcroForm 텍스트 필드로 매핑하여 바인딩된 값을 보존하면서 리더가 해당 필드를 비밀번호 스타일 입력으로 처리할 수 있도록 함
Version 2.356.0
Added
- XFA 플랫화는 이제 명시적인
<bind match="none">필드 바인딩을 존중하므로, 바인딩되지 않은 것으로 표시된 필드는 XFA 양식 또는 데이터 세트 패킷에서 동일한 이름의 값을 취하는 대신 빈 상태로 유지됨
Version 2.355.0
Added
- XFA 플랫화는 이제
$record.customer.legalName과 같은 단순 명시적<bind match="dataRef" ref="...">필드 바인딩을 존중하므로,ApplyXFAAsAcroForm및FlattenLoadedXFA는 자동 동일 이름 매칭 전에 다른 데이터 노드 이름 아래에 저장된 값을 보존함
Version 2.354.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제 모서리 반경, 두께 및 대시 패턴 값을 포함하여 PDF 주석
Border배열을 통해 링크 주석BorderStyleAlt자식을 보존함
Version 2.353.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제 PDF 주석
IC색상 배열을 통해 선, 사각형, 원, 다각형, 절선 및 보정 주석의 표준interior-color속성을 보존함
Version 2.352.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제
width,dashes,style및intensity를 포함하여 표준 주석 테두리 스타일 및 구름 테두리 효과 속성을 보존함
Version 2.351.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제
<contents-richtext>를 통해 주석 리치 텍스트를 보존하고 팝업 자식 도형 및 열림 상태를 주석Popup사전에 가져옴
Version 2.350.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제 텍스트 열림 및 검토 상태 값, 선 끝점 스타일, 링크 및 보정
coords, FreeText 기본 스타일, 기본 모양 및 회전, 사각형 또는 원 여백 도형과 같은 추가 표준 주석 속성을 보존함
Version 2.349.0
Fixed
- XFDF 주석 가져오기/내보내기는 이제 선, 다각형, 절선 및 잉크 주석에 대해 ISO 19444-1 구조를 따름: 선 내보내기에는 완전한
start/end좌표 쌍이 포함되고, 다각형 및 절선 데이터는<vertices>자식 요소를 사용하며, 잉크 데이터는<inklist><gesture>를 사용하고, 세미콜론으로 구분된 좌표 쌍이 올바르게 가져오기 되며, 지원되지 않는 주석 하위 유형이 더 이상 내보낸 수량을 부풀리지 않음
Version 2.348.0
추가됨
LoadedPageCountproperty,DuplicateLoadedPage,AddLoadedBlankPage,SetLoadedPageRotationValueandGetLoadedPageBoxRectAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보GetLoadedEncryptionMethodAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보RC4-40/RC4-128/AES-128/AES-256),GetLoadedFileStructureInfoaggregates linearization / object-stream / xref-type in one call,LoadedSourceFileSizeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보SetLoadedPDFVersionAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보StampLoadedPageImageandStampLoadedPageImageFromFileAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보InsertLoadedTextAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보GetLoadedPageContentLengthAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFPrintOptionsgainsIgnoreHardMarginAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보AutoRotate(landscape pages print landscape automatically)SaveLoadedPagesAsImagesgainsBMPPixelFormat/BMPMonochromeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보JPEGScaleAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보CompressLoadedDocumentAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/Filter /FlateDecode, shrinking output size
수정됨
StampLoadedPageTextandStampLoadedPageImageAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/ContentsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.347.0
Added
AddLoadedOutline은 임의의 중첩 레벨(최상위의 경우ParentIndex = -1)에서 로드된 PDF에/Dest [page /XYZ x y zoom]대상을 가진 새 북마크를 생성함 — HotPDF가 북마크를 읽고 수정하고 삭제할 수는 있었지만 생성할 수는 없었던 한계를 좁히는 가장 요청이 많았던 로드된 문서 기능임SetLoadedOutlineDestination및SetLoadedOutlineURI는 기존 북마크의 대상 페이지를 다시 작성하거나 URI 액션으로 전환함ResolveLoadedNamedDestination은 명명된 대상 문자열을 0부터 시작하는 페이지 인덱스로 변환하고,AddLoadedNamedDestination은 로드된 문서의/Names /Dests트리에 새 앵커를 등록함GetLoadedBookmarkPageIndex는 북마크 제목을 전달하면 해당 북마크가 가리키는 페이지를 가져오는 편리한 조회 기능임
Version 2.346.0
Fixed
- 이미지 배율 조정 품질은 이제
/Interpolate를 존중함: 기본적으로 HALFTONE 스트레치 모드(부드러운 축소)가 사용되며 이미지에서 명시적으로/Interpolate false를 설정하면 COLORONCOLOR가 사용되어 소형 래스터 이미지가 항상 흐려지는 대신 작성자가 의도한 선명한 모서리를 유지함
Version 2.345.0
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
-value × FontSize / 1000API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
$3000), so justified Japanese / Chinese text gets its word spacing instead of only ASCII code 32 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
/FontDescriptor /FlagsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/ItalicAngleAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/BaseFontname, so subset-prefixed fonts whose name carries no-BoldAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.344.0
Added
GetLoadedTrapped는 Info 사전에서/Trapped키(True/False/Unknown)를 읽음(이전에는 쓰기 전용이었음) — PDF/X 프리플라이트 워크플로우는 이제 트랩 상태를 왕복 처리할 수 있음GetLoadedDocumentMetadataXML은 원시 XMP 메타데이터 스트림 바이트를 반환하므로 Info 사전이 없는 PDF/A 문서도 여전히dc:title/dc:creator/xmp:CreateDate를 노출할 수 있음GetLoadedCollectionInfo는 PDF 포트폴리오의/Collection이름을 읽음(EmbeddedFiles 이름 트리는 여전히 파일 목록을 포함함)GetLoadedOutlineChild는 아웃라인 트리의 한 레벨 아래로 내려가 최상위 아웃라인 항목의/First자식을 반환하므로 중첩된 장 / 하위 장 북마크가 더 이상 숨겨지지 않음RotateLoadedPages는 페이지 범위 내의 모든 페이지를 지정된 각도만큼 회전함(기존/Rotate에 누적됨. 이는 페이지별 회전의 배치 버전 기능임)SetLoadedPageBoxForRange는 한 번의 호출로 범위 내의 모든 페이지에 대해 페이지 상자(Media/Crop/Bleed/Trim/Art)를 설정함GetLoadedViewerPreferences는 이제 작성기가 내보내는 6개의 키와 일치하도록HideWindowUI및CenterWindow도 읽음(이전에는 4개만 수신되었음)
Version 2.343.0
Fixed
W n/W* n클립 관용구는 이제 클립을 적용함:n연산자는 보류 중인 경로를 빌드하고 경로와 보류 중인 클립을 모두 무시하는 대신SelectClipPath를 호출하므로re ... W n으로 작성된 사각형 / 컨테이너 클립은 더 이상 경계를 넘어 콘텐츠를 노출하지 않음SetMiterLimit는 이제 스트로크 펜을 만들기 전에 GDI로 푸시되므로 날카로운 조인은 GDI의 기본값 10 대신 PDF 미터 한계(기본값 4)를 준수하여 예각 조인에서 긴 스파이크를 제거함d0(색상 허용)으로 선언된 Type 3 글리프는 이제 명시적으로 색상 억제 플래그를 지우므로 이전의d1글리프가d0글리프에 색상 억제를 확산시키지 않음
Added
ri(렌더링 의도) 및i(평탄도) 연산자는 이제 그래픽 상태(RenderingIntent/Flatness필드)에 소비되고 저장됨(이전에는 자동으로 건너뛰었음)
Version 2.342.0
Added
- 텍스트 렌더링 모드 연산자
Tr은 이제 소비됨; 모드 3(보이지 않음)은 텍스트 런 그리기를 완전히 건너뛰므로 OCR / 양식 배경 숨겨진 텍스트 레이어가 더 이상 겹치는 쓰레기 글리프로 칠해지지 않음 — 이는 실제 PDF에서 가장 흔한Tr케이스임. 모드 1 / 2(획)는 현재 글리프별 아웃라인 지원이 보류되어 있어 채우기로 폴백됨 - 마크 콘텐츠 연산자
BMC/BDC/EMC및DP/MP속성 변형은 이제 렌더러에 깊이 카운터를 유지함. 이는 이후 단계의 OCG / OCMD 가시성 평가를 위한 필수 구성 요소임.BX/EX호환성 연산자는 자체 카운터를 유지하므로 렌더러가 호환성 블록 내부임을 인지함
Version 2.341.0
Fixed
- 베지에 단축 연산자
v및y는 이제 페이지 렌더러에 의해 처리됨(이전에는 자동으로 건너뛰었음) — 모서리가 둥근 사각형, 원 및 Illustrator / PowerPoint / InDesign에서 생성된 곡선이 잘리거나 드롭되는 대신 올바르게 렌더링됨 DrawTextRun은 이제Tz(수평 텍스트 비율),Tw(공백 글리프에 적용되는 단어 간격) 및Ts(텍스트 상승)를 준수하므로 양쪽 맞춤된 Word 내보내기는 글리프를 올바른 너비에 배치하고, 수평으로 늘어지거나 좁혀진 제목은 길이를 유지하며, 위/아래 첨자 텍스트는 기준선 위로 띄워짐 — 이전에는 이 세 가지 텍스트 상태 값이 저장되었지만 한 번도 소비되지 않았음
Version 2.340.0
Added
SearchLoadedPageTextWholeWord는SearchLoadedPageText에 의해 생성된 부분 문자열 일치 항목을 단어 경계에 있는 항목으로 필터링함(일치 시작 전 글리프와 일치 종료 후 글리프는 단어 문자여서는 안 됨). 이는 검색 문자열 뒤에 공백을 패딩하지 않고 단어 단위 일치를 제공함GetLoadedSearchHitRect는 일치하는 글리프 범위를 단일 바운딩 사각형(글꼴 크기의 일부만큼 여백을 둔 사용자 공간 Left/Top/Right/Bottom)으로 축소하므로 뷰어는 글리프 배열을 걷는 대신 히트당 하나의 하이라이트 상자를 그릴 수 있음
Version 2.339.0
Added
ExtractLoadedPageTextColumns는 다중 열 텍스트를 재구성함: 글리프는 Y 허용 오차에 의해 기준선으로 클러스터링되고, 각 행은 X 순서로 정렬되며, 연속된 글리프 사이의 간격이 중간 글리프 진행 값의 설정 가능한 배수를 초과할 때마다 행이 개별 열(탭으로 구분됨)로 분할됨 — 이는 이전에 열 탐색을 범위를 벗어난 것으로 선언했던ExtractLoadedPageTextLayout의 열 인식 대응 기능임THPDFPageElement는 이제EnumLoadedPageElements에 의해 채워지는BaselineRole(brNormal/brSuperscript/brSubscript)을 가짐: 글꼴 크기가 페이지 중앙값보다 눈에 띄게 작고 Y 원점이 지배적인 기준선 위나 아래에 있는 런이 플래그 지정됨
Version 2.338.0
Fixed
- 이미지 XObject는 이제 전체 페이지 비트맵에 대해 스트레칭되는 대신 현재 CTM을 통해 단위 정사각형을 변환하여 배치됨 — 이전의
StretchDraw(Rect(0,0,W,H))는 페이지의 모든 이미지를 잘못된 위치에 배치했으나, 이제 이미지는 콘텐츠 스트림이 실제로 지정하는 사각형에 안착함
Added
/ImageMask스텐실 이미지는 렌더링 측에서 탐지되고 현재 채우기 색상(PDF 8.9.6.1)으로 칠해짐. 이전에는 렌더러가 이를 일반 회색조 비트맵으로 그렸음
Version 2.337.0
Added
- 렌더링 측 스트로크 스타일: 페이지 렌더러는 이제 기존의 고정된
CreatePen(PS_SOLID, ...)대신ExtCreatePen을 통해 기하학적 펜을 생성하여J(LineCap: butt/round/square),j(LineJoin: miter/round/bevel),M(MiterLimit) 및d(LineDash 배열 + 페이즈) 연산자를 준수하므로 둥근 조인, 점선 테두리 및 사각형 엔드 캡이 올바르게 렌더링됨 - 렌더링 측
gs(ExtGState) 연산자:/Resources/ExtGState에 명명된 ExtGState 사전은 이제LW/LC/LJ/ML/ca/CA에 사용되고 그래픽 상태에 적용됨. 이전에는 렌더러가 이 연산자를 완전히 무시했음 - 그래픽 상태는 모두 PDF 기본 초기값을 갖는
LineCap/LineJoin/MiterLimit/LineDash/DashPhase/FillOpacity/StrokeOpacity필드로 확장됨
Fixed
- 클립(
W/W*)은 이제SelectClipPath전에 GDI 다각형 채우기 모드(ALTERNATE대WINDING)를 설정하므로 홀짝 및 비제로그 와인딩 클립 교차점이 더 이상 동일하지 않음
Version 2.336.0
Security
- 렌더링 측
/Indexed색상 공간 파서는 이제HiVal을 사양에 정의된[0..255]범위로 고정하여, 잘못된 형태의 HiVal이nComps × indexHigh32비트 바이트 수를 초과하고 조회 테이블을 지나서 읽어버리는 버퍼 과다 읽기 벡터를 차단함
Added
AttachLoadedAnnotationMeasure는 Line 또는 Polygon 주석에/Measure사전(PDF 1.7 §12.5.6.13)을 작성하며, 여기에는/NumberFormat배열(단위 레이블, 10진수/분수/반올림 스타일, 정밀도),/Scale비율 및/CYX등방성 계수가 포함됨. 이에 따라 뷰어는 도형이 걸쳐 있는 실제 거리 또는 면적을 계산할 수 있음
Version 2.335.0
Added
- 렌더링 측
sh(셰이딩) 연산자: 축(Type 2) 및 방사형(Type 3) 셰이딩이 이제 무시되는 대신 칠해지므로 배경이 Word/Excel 스타일 그래디언트에 의존하는 PDF의 색상 혼합이 렌더링됨. 셰이딩은 축을 따라 대역으로 분할되고 각 대역은 해당 시점에서 셰이딩 함수가 평가하는 색상으로 채워짐
Version 2.334.0
Added
- 렌더링 측 함수 객체 평가기
HPDFEvalTintTransform은 이제 Type 2 지수(Domain/Range 클램핑이 있는C0 + xN·(C1-C0)), Type 0 샘플링(8/16/32비트, Encode 매핑, 최근접 샘플) 및 Type 3 스스티칭(경계 선택된 하위 함수 재귀)을 분석함. 이에 따라Separation/DeviceN색조 변환 및 셰이딩 함수가 v2.333.0 회색 폴백 대신 실제 대체 공간 색상으로 평가됨. Type 4 PostScript 계산기는 성능이 완만하게 저하됨 - 페이지 렌더러는 이제 생성 시 색상 공간 유닛의 간접 참조 해석기 및 디코딩된 스트림 리더를 문서 액세스에 연결하므로 색조 변환 스트림 객체가 이미지 XObject와 동일한 경로를 통해 디코딩될 수 있음
Version 2.333.0
Added
- 렌더링 측 CIE 기반 색상 공간:
CalGray,CalRGB(감마 + 3×3 행렬) 및Lab(6/29 분기점 큐브가 있는 Lab→XYZ→sRGB)은 이제 검은색으로 저하되는 대신 실제 색상으로 해석됨. Bradford 보정된 sRGB 행렬은 백색점별로 캐시되므로 픽셀당 작업이 단일 3×3 곱셈으로 유지됨 - 렌더링 측
ICCBased색상 공간은/Alternate(또는 Alternate가 없는 경우 N 기반 DeviceRGB/Gray/CMYK 추정)를 통해 해석되므로, ICC 프로필을 포함하는 페이지가 lcms 종속성 없이 올바르게 표시됨 - 렌더링 측
Separation및DeviceN별색 색상 공간: 대체 공간, 색조 변환 함수 참조 및 구성 요소 수가 파싱됨; 색조 변환은 플러그형 평가기를 통해 연결되므로 별색 페이지는 "색상 설정 안 됨"과 구별됨(완전한 색조 평가는 함수 엔진을 통해 처리됨) - 일반 색상 연산자
cs/CS/sc/SC/scn/SCN이 이제 페이지 렌더러에 의해 처리됨. 이는 모든 비Device 색상 공간이 로드된 페이지에서 작동하기 위한 필수 조건임 - 확장된
THPDFColorSpaceFamily및THPDFCIEParams레코드를 사용하여HPDFResolveColor를 통해 통합 색상 분석을 구현하여 공간별 임시 로직을 대체함
Version 2.332.0
Added
RenderSignatureFieldAppearance는AttachSignatureFieldAppearance의 편의 래퍼로 제공되는THPDFSignatureDisplayOptions세트를 통해 선택된 사전 설정된 서명 필드 모양 템플릿 — 테두리, 밝은 채우기 및 최대 4개의 레이블이 지정된 텍스트 행("Digitally signed by <Name>", "Reason: ", "Location: ", "Date: ") — 을 그림EnumerateSystemCertificates는 동적으로 로드되는Crypt32.dll을 통해 Windows 인증서 저장소(일반적인MY/ROOT/CA)를 탐색하고 각 인증서의 주체 / 발급자 표시 이름과 원시 DER을 반환함. 이는 "인증서 / USB 키 선택" 서명기 UI의 빌딩 블록 역할을 함
Security
- 서명 해시 알고리즘은 기본적으로 SHA-256이며, PAdES Seed Value
DigestMethods는 이미 SHA-256 / SHA-384 / SHA-512를 수용하므로 SHA-1 서명 경로는 존재하지 않음
Version 2.331.0
Added
RenderLoadedPageToDC는 인쇄 및 고DPI 워크플로우를 위해 비트맵 왕복 처리를 없애고 호출자가 제공한 장치 컨텍스트(프린터 캔버스, 오프스크린 표면, 사용자 정의TCanvas)로 한 페이지를 직접 그림RenderLoadedPageToClipboard는 24비트 비트맵 또는 확장 메타파일(벡터 텍스트)로 클립보드에 페이지를 배치하므로 Word에 붙여넣기 / 이미지 편집기에 붙여넣기가 문제없이 작동함THPDFPrintOptions레코드가 포함된PrintLoadedDocument는 페이지 범위, DPI, 부수, 한 부씩 인쇄, FitPage 배율 및 페이지별 렌더링을 통해 VCLTPrinter를 구동함 — 문서 라이브러리는 이제 모든 호출자가 직접 구성하는 대신 자체 인쇄 경로를 제공함
Version 2.330.0
Added
GetLoadedPageLabel은 지정된 페이지 인덱스를 포함하는/PageLabels /Nums범위를 읽어 스타일 코드, 접두사 및 시작 번호를 반환함 — 이는SetLoadedPageLabel의 읽기 대응 부분으로, 호출자가 직접 만들지 않은 레이블도 이제 검사 및 왕복 처리할 수 있음StitchLoadedPageSideBySideEx는 설정 가능한 수평 여백 및 소스 페이지 배율 인수를 사용하여 나란히 2-up 스티칭을 수행함. 기존의StitchLoadedPageSideBySide는 간격 없이 절반 너비로 고정되어 있었음
Version 2.329.0
Added
- 14가지 표준 스탬프 이름(Approved, AsIs, Confidential, Departmental, Draft, Experimental, Expired, Final, ForComment, ForPublicRelease, NotApproved, NotForPublicRelease, Sold, TopSecret)을 모두 아우르는
THPDFRubberStampIcon열거형이 포함된AddLoadedRubberStampAnnotation을 제공하여, 뷰어가 사용자 정의 모양 스트림 없이 친숙한 비트맵을 렌더링하도록 함 SetLoadedAnnotationCloudyBorder는/BE /S /C /I및/IC내부 색상 배열을 작성하여 Square / Circle / Polygon 주석을 구름 모양 테두리로 전환함SetLoadedLineAnnotationCaps는 새로운THPDFLineEndStyle열거형(None / OpenArrow / ClosedArrow / Butt / ROpenArrow / RClosedArrow / Slash / Diamond)에서 Line / Polyline 주석의/LE선 끝(화살표) 스타일을 설정함
Version 2.328.0
Added
EnsureLoadedFieldAppearanceStream은 기존 AcroForm 필드에 대해/DA+/V+/Rect를 기반으로/AP /NForm XObject를 생성하므로,/NeedAppearances를 무시하는 뷰어도 여전히 Acrobat을 거치지 않고 필드 값을 렌더링함ApplyLoadedFieldValidation은 AcrobatAF*도우미를 사용하여 숫자, 백분율, 날짜, 시간, 통화, 우편번호, 주민등록번호, 전화번호 및 임의의 마스크 입력 종류를 포괄하는 서식 / 키 입력 / 검증 스크립트 삼중주를 필드에 첨부함 — 호출자는 더 이상AFNumber_Format/AFDate_FormatEx/AFRange_ValidateJavaScript를 직접 작성할 필요가 없음ApplyLoadedFieldCalculation은AFSimple_Calculate스크립트를 연결하여 필드가 Sum / Average / Product / Minimum / Maximum을 통해 설정된 명명된 소스 필드의 값을 집계하도록 함
Version 2.327.0
Added
- 시각적 검색 및 대체
SearchAndRedactReplaceLoaded: 단어와 일치하는 모든 부분에 대해 일치하는 사각형을 선택한 색상으로 가리고(또는HPDF_NO_MASK로 마스크 건너뜀) 위에 대체 텍스트를 스탬프함. 이는 원본 글꼴에 역 문자 코드 테이블이 없거나 대체 시 다른 글꼴이 필요할 때 바이트 수준의ReplaceLoadedPageText를 보완함 - 영역 텍스트 추출
GetLoadedPageTextInRegion은 기준선 사이에 줄바꿈을 포함하여 원점이 사용자 공간 사각형 내에 속하는 모든 글리프를 연결함 — 이는 "이 상자에서 텍스트 복사" UI 흐름의 빌딩 블록임 - 커서 스타일
SearchLoadedFirst는 첫 번째 일치를 단일THPDFTextMatch로 반환하므로 호출자는 일치하는 전체 배열을 관리하지 않고 일치 항목을 탐색할 수 있음
Version 2.326.0
추가됨
- Document-wide
MeasurementUnitproperty (muPoints/muPixels/muInches/muMM/muCentimeters/muTwipsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보ToPDFUnit/FromPDFUnit - Placeholder substitution in watermark text:
<%PageNo%>,<%TotPage%>,<%FileName%>,<%ShortDate%>,<%LongDate%>,<%ShortTime%>,<%LongTime%>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 AddTextWatermarkExAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFWatermarkBaserecord (angle, opacity, position presets)- Shape-watermark page helpers
AddRectangleWatermark,AddEllipseWatermark,AddLineWatermarkandAddPolygonWatermarkAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보q/QAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Unified
THPDFWatermarkTemplaterecord withMakeText/MakeRectangle/MakeEllipse/MakeLine/MakePolygonAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFWatermarkTemplateArraycomposite type - Loaded-document watermarking:
StampLoadedPageTextandStampLoadedPagesTextAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보MeasurementUnitAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보StampLoadedPagesCompositeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Z-order control on loaded-document stamps:
Underlay = TrueAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/ContentsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 EnumLoadedPageElementsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFPageElementAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보SaveLoadedPagesAsImagesAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보GetLoadedPageMetafileAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보TMetafilevia the newTHPDFPageRenderer.ExecuteToDCAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.325.3
Fixed
- 배치 프리플라이트 보고서를 집계할 때 단일 입력 파일이 2GB를 초과하더라도 더 이상 총 바이트 수 오버플로우가 발생하지 않음
Version 2.325.2
Fixed
- 객체 스트림이 활성화된 상태(
UseObjectStreams)에서 2GB를 초과하는 문서를 저장할 때 더 이상 손상된 교차 참조 스트림이 작성되지 않음; 이전에는 32비트 정수로 제한되었던 객체 오프셋 및 교차 참조 스트림 위치가 이제 전체 쓰기 과정에서 64비트 값으로 유지됨
Version 2.325.1
Fixed
- 손상된 PDF를 정상적으로 파싱할 수 없을 때 사용되는 4가지 복구 전용 스캔 — 객체 스트림 압축 해제, 객체 스트림 검색 및 2가지 참조 복구 패스 — 은 더 이상 2GB를 초과하는 파일을 잘린 버퍼로 읽지 않음. 이제 이러한 파일에서 손상된 데이터를 스캔하는 대신 복구를 건너뜀
Version 2.325.0
Added
- EMF/WMF 가져오기는 이제
EMR_GRADIENTFILL사각형 그래디언트(GRADIENT_FILL_RECT_H/GRADIENT_FILL_RECT_V)를 PDF Type 2 축형 셰이딩 패턴으로 렌더링함. 각TRIVERTEX색상 쌍을RegisterAxialGradient호출에 매핑하고 결과 패턴으로 사각형을 채움. 이전에는 이 레코드가 문서화된 no-op(무동작)이었으나, 이제 EMF의 Word/Excel/PowerPoint 그래디언트 사각형이 올바른 왼쪽에서 오른쪽 또는 위에서 아래 색상 혼합으로 렌더링됨
Version 2.324.0
Added
- EMF/WMF 가져오기는 이제
EMR_GDICOMMENT주석을 분석하여 Adobe PDF 통과 마커(0x416F4650= "AoFP", MS-EMF §2.3.3)를 다른 주석 유형과 구분함. Adobe 마커가 있는 경우 주석 페이로드에서pdfmark키워드를 검색하고 디버그 로깅을 통해 노출하여 사용자가 어떤 EMF 생성기가 PostScript pdfmark 코드 조각을 내보내는지 식별할 수 있도록 함. 다른 주석 유형은 무동작으로 유지됨. HotPDF와 llPDFLib 모두 이전에는 이 레코드에 대해 빈 스텁만 지원했음
Version 2.323.0
Added
- EMF/WMF 가져오기는 이제
EMR_GRADIENTFILL을 문서화된 no-op으로 명시적으로 인식함(PDF Type 2/3 셰이딩 패턴으로 그래디언트 채우기를 표현할 수 있지만 뷰어 렌더링이 일관되지 않고 GDI's 픽셀당 Gouraud 보간이 명확하게 매핑되지 않음). 이전에는 이 레코드가 케이스 테이블 항목 없이 자동으로 무시되었음
Version 2.322.0
Changed
- PFX 기반 서명 시 64MB 이상의 입력은 이제 256KB 롤링 읽기에서
/ByteRange+/Contents자리 표시자를 스캔하는 스트리밍 청크 서명기(HPDFCMSSignPDFStreamChunked)를 통과함.HPDFCMSSHA256StreamRanges를 통해 두 개의 바이트 범위 창을 다이제스트한 다음, 전송 중인 자리 표시자 바이트를 패치하면서 입력 스트림을 출력 스트림으로 복사하여 피크 메모리가 전체 파일 크기 대신 256KB 버퍼로 제한됨; 소규모 입력은 빠른 인메모리Pos()+Move()경로를 유지함
Version 2.321.0
Added
- 선택적 콘텐츠 그룹 사용 사전:
SetOptionalContentGroupUsage는 등록된 OCG(PDF 1.7 §8.11.4.4 Table 100)에/Usage항목을 첨부하여 뷰어가 컨텍스트에 따라 레이어를 자동으로 표시/숨김 처리함. 범주View/Print/Export는<Category>State=ON/OFF를 작성하며,Zoom은 실수 쌍Min을 작성하고,Language/Creator는 문자열 값을 작성함 - 아웃라인 하위 트리 복사:
THPDFDocOutlineObject.CopySubtree는 제목 / 색상 / 굵게 / 기울임꼴 / 열림 상태를 전파하면서 새 객체 번호와 새 대상을 생성하여 새 부모 아래에서 노드의 전체 자식 하위 트리를 딥 클로닝함 - 아웃라인 토폴로지 도우미
IsDescendant(MoveTo에서 사용하는 순환 안전 서술어) 및MoveTo(노드의 부모를 재설정하여 이전 형제 체인에서 분리하고 새 부모의 마지막 자식으로 다시 연결하며, 영향을 받는 모든 조상 노드에 대해/Prev//Next//First//Last//Count관리를 완전하게 수행함)를 지원함
Version 2.320.0
추가됨
- Nested optional-content /Order tree:
BeginOptionalContentOrderGroup/AddLayerToOptionalContentOrder/EndOptionalContentOrderGroupAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/OrderAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/OCGsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.319.1
Fixed
- 내장된 JBIG2 이미지가 (일반적인 MQ 산술 코딩 대신) 표준 허프만 코딩 옵션을 사용하는 PDF를 로드할 때 더 이상 실패하지 않음: 로더는 포기하기 전에 대체 디코딩 엔진으로 다시 시도하므로 선호하는 디코딩 엔진에 관계없이 이러한 이미지가 성공적으로 로드됨
Version 2.319.0
변경됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
ExecuteRecordAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보BeginPathseen,EndPath/AbortPathAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.318.0
Added
- 선택적 콘텐츠 라디오 버튼 그룹: 새로운
RegisterOptionalContentRadioGroup은 멤버가 서로를 끄는 상호 배타적인 레이어 세트(PDF 1.7 §8.11.4.3/RBGroups)를 선언함. 대표적인 용도는 "Draft / Review / Final"과 같은 단일 선택 레이어 패널임
Version 2.317.0
Added
THPDFDocOutlineObject.InsertBefore/InsertAfter는 노드를 분리하고 다시 연결할 필요 없이 아웃라인 트리를 임의의 순서로 작성할 수 있도록 기존의AddChild(추가) 및AddChildFirst(앞에 추가) 도우미를 보완하여 기존 아웃라인 이중 연결 리스트의 임의 위치에 새 형제를 분할 연결함- EMF/WMF 가져오기는 이제 ICM/팔레트 패밀리(
EMR_SETBRUSHORGEX,EMR_SELECTPALETTE,EMR_SETCOLORADJUSTMENT,EMR_SETICMMODE,EMR_CREATECOLORSPACE,EMR_SETCOLORSPACE,EMR_DELETECOLORSPACE,EMR_GDICOMMENT) 및 PDF 매핑이 없는 패밀리(EMR_FRAMERGN,EMR_INVERTRGN,EMR_PAINTRGN,EMR_FLATTENPATH,EMR_WIDENPATH,EMR_SETMETARGN,EMR_OFFSETCLIPRGN,EMR_PLGBLT,EMR_POLYTEXTOUTA,EMR_POLYTEXTOUTW)를 명시적으로 인식하고 PDF 콘텐츠 스트림으로 출력하지 않고 해당되는 경우 GDI 참조 DC로 전달함. 이전에는 이러한 레코드가 자동으로 삭제되었으나 이제 문서화되어 GDI 측과 일관되게 유지됨
Version 2.316.0
Added
- 새로운
JBIG2Benchmark데모는 동일한 3페이지 종합 스캔에서 각THPDFJBIG2Options구성(이미지별 무손실, 이미지별LossyLevel=5, 페이지간 누적 글로벌, 사각형 기호 추출)마다 하나씩 총 4개의 PDF를 생성하며, 각 출력 크기를 인쇄하여 v2.310.0 스캔 친화적 기본값, v2.314.0 페이지간 누적기 및 추출 모드 간의 트레이드오프를 직접 비교할 수 있도록 함
Version 2.315.0
Changed
- 페이지간 누적된 JBIG2 사전은 이제 자동 배치 처리를 수행함: 실행 중인 글리프 가로 합계가 131071 픽셀을 초과하면 현재 사전이 동결되어 하나의
/JBIG2Globals스트림으로 출력되고 누적기가 재설정되므로 다음 배치는 새로운 글로벌 스트림을 시작함. 이는 llPDFLib의TotalWidth기반 유출을 미러링하며 매우 큰 스캔 실행 시 독자가 효율적으로 처리할 수 있는 크기로 개별 글로벌 스트림을 유지함
Version 2.314.0
Added
- 페이지간 누적 JBIG2 기호 사전:
THPDFJBIG2Options.AccumulateGlobalsAcrossPages := True로 설정하면(기존UseSymbolDictionary+UseGlobalSegments+ 기본 폴백 스위치와 함께) 연속된 1비트icJBIG2이미지가 각각 고유의 사전을 내보내는 대신 하나의 커지는 인메모리 기호 사전과 하나의/JBIG2Globals간접 스트림을 공유함. 새로운THPDFJBIG2SymbolDictionary는 이미지별 인코더가 사용하는 것과 동일한 손실 / 무손실 매칭을 포함하는 영구 글리프 세트를 보유함. 새로운smoke_jbig2_accum_decode는 서로 다른 글리프 레이아웃을 가진 두 페이지가 단일 글로벌 객체 참조를 공유하고 소스 픽셀로 비트 단위로 다시 디코딩됨을 검증함
Version 2.313.0
Added
- 기본 기호 사전 인코더에 의해 생성된 JBIG2 글로벌 세그먼트 스트림은 이제
THPDFJBIG2GlobalsPool을 통해 문서 수준에서 콘텐츠 주소가 지정되므로 바이트 단위로 동일한 글로벌을 생성하는 이미지가 각각 고유의 스트림을 내보내는 대신 하나의/JBIG2Globals간접 스트림을 공유함. 새로운smoke_jbig2_globals_multi스모크 테스트는 동일한 글리프를 가진 세 페이지가 하나의 공유 글로벌 스트림으로 축소됨을 입증함
Version 2.312.0
Added
- EMF/WMF 가져오기는 이제
EMR_SCALEVIEWPORTEXTEX,EMR_SCALEWINDOWEXTEX,EMR_EXCLUDECLIPRECT,EMR_CREATEDIBPATTERNBRUSHPT,EMR_SETMITERLIMIT,EMR_SETTEXTJUSTIFICATION및EMR_SETROP2를 처리하여 llPDFLib과의 7개 레코드 격차를 좁히므로 오래된 GDI 툴체인에서 내보낸 EMF 스트림이 더 이상 이러한 레코드를 자동으로 삭제하지 않음.SETMITERLIMIT및SETROP2는 즉시 적용되는 반면, 나머지는 현재 좌표 또는 클립 출력을 방해하지 않고 이후 렌더링 측 연결을 위해 상태를 저장함
Version 2.311.0
Added
HPDFCMSSHA256StreamRanges는 이제TStream에서 256KB 청크 단위로 두 개의 PDF/ByteRange창을 직접 다이제스트하므로 멀티 GB 서명 PDF를 먼저 전체 파일을AnsiString으로 복사하지 않고도 해싱할 수 있음. 기존 인메모리HPDFCMSSHA256ByteRanges가 매우 대용량 입력에 대해 일치시킬 수 없었던 llPDFLib의 스트림 기반CalcHash와의 격차를 해소함
Version 2.310.0
Changed
THPDFJBIG2Options는 이제 스캔 친화적인 설정(LossyLevel = 5,RemoveIsolatedBlackPixels = True,BlackDotSize = 3)으로 기본값 지정되어 1비트 스캔 이미지가 기본적으로 훨씬 더 작게 압축됨. 엄격한 무손실 매칭을 복원하려면LossyLevel = 0또는Lossless = True로 설정할 수 있음
Performance
- xref 테이블 증가는 이제 각 간접 객체마다 동적 배열을 다시 할당하는 대신 기하급수적으로(소규모 문서 +N, 대규모 문서 +25%) 증가하여 수많은 객체를 포함하는 대형 PDF를 로드하고 작성하는 과정을 지배했던 O(n²) 비용을 제거함
Version 2.309.4
Added
THPDFDocOutlineObject.AddChildFirst추가: 생성된 아웃라인 노드가 저장된 아웃라인 순서를 유지하면서 기존 형제 노드 앞에 자식 항목을 추가(prepend)할 수 있음
Version 2.309.3
Added
THPDFPageMode에pmUseOC추가: 생성된 문서가 카탈로그/PageMode /UseOC를 통해 선택적 콘텐츠 레이어 패널을 요청할 수 있음
Version 2.309.2
Added
THPDFPage.AddTextAnnotation에 제목 문자열 오버로드 추가: 생성된 텍스트 주석이 기존 아이콘, 색상 및 열림 상태 인수를 유지하면서 PDF/T제목 또는 작성자 항목을 작성할 수 있음
Version 2.309.1
Fixed
THotPDF.OutputStream을nil로 설정하여 비우면 이제 문서를 스트림 출력 모드로 유지하는 대신 일반FileName출력을 복구함
Version 2.309.0
Fixed
- EMF/WMF 가져오기는 이제 비 GUI 회귀 테스트를 거치는
EMR_SETWORLDTRANSFORM,EMR_MODIFYWORLDTRANSFORM및EMR_SETPIXELV를 유지하면서 복사, 교차 및 제외 클리핑에 대해EMR_EXTSELECTCLIPRGN영역 모드를 준수함
Version 2.308.0
Added
- FastReport 애드온 디자인 타임 등록이 이제
frxHotPDFDesign으로 제공되어 호환성을 위해 기존 런타임 유닛과Register엔트리 포인트를 유지하면서TfrxHotPDFExport를 FastReport VCL 팔레트에 배치함
Version 2.307.0
Added
SignPDFWithPFX는 이제 PBES2 AES-256-CBC 프로필 외에도 레거시 PKCS#12 PBE-SHA1-3DES 암호화된 PFX 파일을 분석함
Version 2.306.0
Changed
- 동일한 인코딩 이미지를 추가하는 반복 호출은 이제 서로 다른 JPEG 품질 설정 및 마스크 관계에 대한 고유 출력을 보존하면서 기존 PDF 이미지 XObject를 재사용함
Version 2.305.0
Added
TfrxHotPDFExport.PageRange는 이제 HotPDF의 공유 페이지 범위 파서를 재사용하면서 FastReport 내보내기가1,3-5와 같은 1부터 시작하는 페이지 필터링을 선택할 수 있도록 함
Version 2.304.0
Fixed
- XFA-to-AcroForm 테이블 플랫화는 이제 모든 확장 가능한 단일 자동 열이 테이블 콘텐츠 너비를 상속받도록 하여 고유의
w가 없는 필드도 여전히 측정 가능한 너비를 얻고 행 간격을 보존함
Version 2.303.0
Fixed
- XFA-to-AcroForm 테이블 플랫화는 이제 확장 가능한 텍스트 셀이 자체
w를 생략할 때 고정된columnWidths값을 상속하도록 하여 행 높이가 측정되고 후속 행이 분리된 상태를 유지함
Version 2.302.0
Fixed
- XFA-to-AcroForm 플랫화는 이제 중첩된
layout="tb"및 래핑된layout="lr-tb"흐름 내부에서 확장 가능한 텍스트 필드를 측정하며, 테이블 행은 후속 필드를 배치할 때 확장 가능한 텍스트 셀 높이를 유지함
Version 2.301.0
Fixed
- XFA-to-AcroForm 플랫화는 이제 명시적인
h높이를 생략할 때 텍스트 필드를layout="tb"및layout="lr-tb"흐름 컨테이너에 유지하고, 지원되지 않는 확장 가능한 레이아웃으로 건너뛰는 대신 래핑된 콘텐츠 높이를 측정함
Version 2.300.0
Fixed
THotPDF.ExtractObjectFromStream은 이제 실체화된 객체 스트림 멤버에 대해 파싱된 사전을 반환하며, 호출자가 로드된 PDF 1.5+ 객체 스트림을 검사할 때 더 이상 원시 데이터 진단 키를 조작해 내지 않음
Version 2.299.0
Added
THotPDF.DecompressAllObjectStreams는 이제 public으로 노출되어 객체 스트림을 사용한 로드된 PDF가 소스 객체 스트림 레이아웃을 복사하는 대신 일반 간접 객체로 실체화된 조밀한 객체로 저장되도록 강제함
Version 2.298.0
Fixed
- AcroForm 필드 생성 시 라디오 버튼 그룹에 대한 유효한 공유 부모 워크플로우를 보존하면서 새 문서와 로드된 문서 편집 모두에 대해 중복된 루트 필드 이름을 거부함
Version 2.297.0
Added
TDBGridHotPDFExportOptions및TDBGridHotPDFExport컴포넌트는 이제PDFACompliance및PDFXCompliance를 노출하여 DBGrid 테이블 내보내기에서 직접 문서 생성 시 사용되는 것과 동일한 HotPDF 표준 준수 게이트를 선택할 수 있음
Version 2.296.0
Added
TQRHotPDFExportFilter및TdxHotPDFExportOptions는 이제PDFACompliance및PDFXCompliance를 노출하여 QuickReport 및 DevExpress 내보내기에서 직접 문서 생성 시 사용되는 것과 동일한 HotPDF 표준 준수 게이트를 선택할 수 있음
Version 2.295.0
Added
TfrxHotPDFExport및TppHotPDFDevice는 이제PDFACompliance및PDFXCompliance를 노출하여 리포트 내보내기에서 직접 문서 생성 시 사용되는 것과 동일한 HotPDF 표준 준수 게이트를 선택할 수 있음
Version 2.294.0
Added
- Form XObject 및 타일링 패턴 캔버스 빌더는 이제 호출자가 페이지 재사용을 위해 리소스를 등록하기 전에 형식화된 그리기 도우미를 통해 재사용 가능한 리소스를 구성할 수 있도록 함
THPDFExtGStateOptions는 이제 하나의 ExtGState가 투명도, 혼합 모드, 선 두께, 선 끝(Line Cap), 선 연결(Line Join) 및 미터 제한 설정을 결합할 수 있도록 함
Version 2.293.0
Added
- 기본 JBIG2 인코딩은 이제 선택적 공유 전역 사전, 사각형 및 이미지 전용 추출 모드, 손실 픽셀 차이 가드, JBIG2가 허용되지 않는 경우 CCITT로의 PDF/A 폴백이 포함된 기호 사전 압축을 지원함
- EMF/WMF 렌더링은 이제 PDF 이미지 마스크 및 투명도 경로를 통해
TransparentBlt및MaskBlt비트맵 레코드를 처리함 - FastReport 및 ReportBuilder 기본 내보내기 모드는 이제 스타일이 지정된 메모/서식 있는 텍스트, 바코드, 그림, 벡터 도형, 선, 클리핑, 프레임, 대시 및 URL 주석 경로를 포함하여 더 많은 객체 수준 출력을 처리함
- HugeFileBenchmark 데모는 이제 작업 세트 및 피크 작업 세트 메트릭을 보고하고, 선택적 메모리 제한을 지원하며, 생성된 작업 파일을 리포트 출력과 분리하여 유지함
- Delphi
PDFOptimize데모는 이제 콘텐츠 스트림, 객체 스트림, JPEG 품질, CCITT 및 JBIG2 출력에 대한 프로듀서 측 압축 선택 항목을 문서화함
Fixed
- 데모 커버리지 검사는 이제 영어 기준 데모 README를 포함하고, 통합된 C++Builder 샘플을 실제 파일에 매핑하며, 루틴 테스트 실행 시 GUI 데모를 기본적으로 비활성화된 상태로 유지함
Version 2.292.32
Added
- EMF/WMF 해치 브러시는 이제 PDF 타일링 패턴에 매핑되므로 가져온 CAD 도면 및 리포트가 해당 채우기를 단색으로 플랫화하는 대신 해치 텍스처를 보존할 수 있음
Fixed
- 로드된 문서 사전 편집 시 객체를 dirty 상태로 표시하므로,
SaveLoadedDocument는 아웃라인 및 객체 트리 편집 후 원본 소스를 복사하는 대신 변경된 PDF를 다시 작성함 - 로드된 아웃라인을 제거하면 이제 형제 북마크를 다시 연결하며, 회전되지 않은 밑줄 및 취소선 텍스트 장식은 이제 채워진 사각형 연산자를 내보냄
Version 2.292.31
Added
THPDFEmfOptions.ShowNullBrush는 이제 기본적으로 채워지지 않은 null 브러시를 보존하면서 디버깅 및 CAD 스타일 가져오기 워크플로우를 위해 EMF/WMF 렌더링이 null 브러시 채우기를 노출하도록 허용함
Version 2.292.30
Added
THPDFEmfOptions.CanvasOver는 이제 기본값이 현재 Canvas-on-top 순서를 유지하는 동안 페이지 캔버스 재생이 구문 분석된 캔버스 메타파일 위에 기존 PDF 콘텐츠를 배치하도록 허용함
Version 2.292.29
Added
THPDFEmfOptions.Redraw는 이제 EMF/WMF 호출자가 기본 임시 다시 그리기 경로를 유지하거나 옵트아웃하여 원본 메타파일을 직접 구문 분석할 수 있도록 함
Version 2.292.28
Added
THPDFEmfOptions.UseFrame은 이제 EMF/WMF 렌더링이 선언된 프레임 경계에 의존하는 메타파일에 대해 가져온 출력을 EMF 헤더 프레임으로 잘라내도록 허용함
Version 2.292.27
Added
THPDFEmfOptions.ShowNullPen은 이제 기본적으로 보이지 않는 null 펜을 보존하면서 디버깅 및 CAD 스타일 가져오기 워크플로우를 위해 EMF/WMF 렌더링이 null 펜 윤곽선을 노출하도록 허용함
Version 2.292.26
Added
THotPDF.SetFormFieldTooltip은 이제 기존Add...필드 메서드를 통해 생성된 위젯에 대해 애플리케이션이 필드 이름으로 AcroForm/TU필드 힌트를 지정할 수 있도록 함
Version 2.292.25
Fixed
TfrxHotPDFExport기본 객체 모드는 이제TfrxPictureView가 직접 HotPDF 이미지 XObject로 작성될 때 해당 클리핑 및 프레임 렌더링을 보존함
Version 2.292.24
Added
TfrxHotPDFExport기본 객체 모드는 이제 지원되는 수평 1차원 FastReport 바코드 뷰를 HotPDF 바코드 연산자에 직접 매핑하고, 사람이 읽을 수 있는 텍스트, 체크섬 생성, 보조 텍스트, 회전, 색상 막대 및 지원되지 않는 심볼로지는 기존 대체 경로에 유지함
Version 2.292.23
Added
TppHotPDFDevice기본 그리기 명령 모드는 이제 지원되는 1차원 ReportBuilder 바코드 그리기 명령을 HotPDF 바코드 연산자에 직접 매핑하고, 사람이 읽을 수 있는 텍스트, 애드온 코드, 체크디지트 계산, 색상 막대, 회전 또는 지원되지 않는 우편 심볼로지가 필요한 명령에 대해서는 기존 확장 메타파일 대체 경로를 보존함
Version 2.292.22
Fixed
- 자동 PDF 뷰어 실행은 이제
HOTPDF_SUPPRESS_AUTO_LAUNCH=1을 사용하여 비대화형 실행에서 억제될 수 있으며, 번들로 제공되는 테스트 및 스모크 러너는 해당 가드를 기본적으로 활성화하여 비 GUI 회귀 실행이 뷰어 창을 열지 않도록 함
Version 2.292.21
Added
THPDFPage.ShowMetafileEx는 이제 호출당THPDFEmfOptions오버로드를 포함하여 호출자가 문서 수준의 기본값을 보존하면서 한 번의 메타파일 그리기 작업에 대해 EMF/WMF 렌더링 설정을 재정의할 수 있도록 함
Version 2.292.20
Added
TfrxHotPDFExport는 이제 FastReport 내보내기를 위해AutoCreateURL,FontEmbedding,NotEmbeddedFonts,ActivateProtection,UserPassword,OwnerPassword,CryptKeyLength,ProtectOptions및EncryptMetadata를 포함한 HotPDF 출력 컨트롤을 노출함
Version 2.292.19
Added
- 디자인 타임 패키지가
TDBGridHotPDFExport를 HotPDF IDE 팔레트에 등록할 수 있도록 하면서도 디자인 타임 패키지 참조 없이 DBGrid 런타임 내보내기 어댑터를 사용할 수 있도록 전용dbGridHotPDFDesign애드온 유닛을 추가함
Version 2.292.18
Changed
HPDFParsePFX는 이제 명시적인 HMAC-SHA-256뿐만 아니라 기본 HMAC-SHA-1 PRF를 사용하는 PBES2/PBKDF2 프로필을 지원하여, 이전의 AES-256-CBC PKCS#12 내보내기와의 호환성을 향상시키는 동시에 지원되지 않는 PBE-SHA1-3DES 프로필은 진단 메시지와 함께 거부된 상태로 유지함
Version 2.292.17
Added
THPDFTextOutBoxResult와 함께THPDFPage.TextOutBoxEx및THPDFPage.WideTextOutBoxEx가 추가되어, 기존 메서드가 작성된 문자 수를 계속 반환하는 동안 줄바꿈된 텍스트 상자 출력이 작성된 문자 수, 작성된 행 수 및 원본 텍스트가 상자를 넘쳤는지 여부를 보고할 수 있도록 함
Version 2.292.16
Added
- 페이지 텍스트 출력을 상단 가장자리와 기준선 Y 좌표 의미 체계 간에 전환하기 위한
THPDFPage.TextFromBaseLine(Boolean)과, 전문가용 원시 콘텐츠 연산자를 자동 그래픽 상태 저장 및 복원 쌍으로 래핑하기 위한THPDFPage.AppendScopedRawContent가 추가됨
Version 2.292.15
Changed
TfrxHotPDFExport기본 객체 모드는 준비된 메모 뷰를 HotPDF 페이지 텍스트 작업에 직접 매핑할 때 잘린 메모 텍스트 및 FastReport 문자 간격을 보존함
Version 2.292.14
Added
TppHotPDFDevice는 이제 ReportBuilder 기본 그리기 명령 내보내기를 위한 선택적RenderMode를 노출하여 일반 텍스트, 도형, 선, 이미지 및 URI 하이퍼링크 명령을 HotPDF 페이지 작업에 직접 매핑하는 동시에, 지원되지 않는 명령이 포함된 페이지에 대해서는 기존 확장 메타파일 브리지로 자동 대체함
Version 2.292.13
Added
- 표준 AES 비밀번호 암호화를 위한
THotPDF.EncryptMetadata가 추가되어 호출자가/EncryptMetadata false를 작성하고 XMP/Metadata스트림을 일반 텍스트로 유지하며 이전의 상시 작동 메타데이터 암호화 동작에 의존하는 대신 일치하는 AES-128 key 파생 또는 AES-256/Perms메타데이터 플래그를 내보낼 수 있도록 함
Version 2.292.12
Added
THPDFAcroFormField및THPDFPage.CreateTextField,CreateCheckBox,CreateRadioButton,CreateComboBox,CreateListBox를 통한 생성 시간 AcroForm 필드 래퍼가 추가되어, 필드 생성 직후 체인형 툴팁, 공통 플래그, 기본 모양 및 필드 또는 위젯의 추가 동작 설정을 지원함
Version 2.292.11
Added
- 상위 수준 이미지 마스크, 투명도, 이미지별 JPEG 품질 및 자동 흑백 압축 도우미가 추가됨:
AddImageAsMask,AddImageWithMask,AddImageWithTransparency,AddImageWithTransparency32,AddImageWithJpegQuality,AddMonochromeImageAuto및 선택적icAutoMono압축 선택기
Version 2.292.10
Added
THPDFActionBuilder체인을 위해/AA /K,/AA /F,/AA /V,/AA /C의 명명된 래퍼, 위젯 마우스 및 포커스 트리거, 그리고 필드 및 주석 트리거 항목에 대한 일치하는 지우기 도우미를 포함하는 AcroForm 필드 추가 동작 편의 도우미가 추가됨
Version 2.292.9
Added
THPDFActionBuilder체인을 위한 문서 라이프사이클 추가 동작 도우미가 추가됨: 카탈로그/AA /WC,/AA /WS,/AA /DS,/AA /WP및/AA /DP항목을 작성하는SetDocumentCloseAction,SetDocumentWillSaveAction,SetDocumentDidSaveAction,SetDocumentWillPrintAction,SetDocumentDidPrintAction및 일치하는 지우기 메서드
Version 2.292.8
Added
THPDFPageActionTrigger를 통한 생성된 페이지 추가 동작 지원,SetPageAdditionalAction,SetPageOpenAction,SetPageCloseAction에 대한 현재 페이지 도우미 및 일치하는 지우기 메서드가 추가되었으며, 활성 그리기 페이지를 변경하지 않고 재사용 가능한THPDFActionBuilder체인에서 페이지/AA /O및/AA /C동작을 작성하는THotPDF페이지 인덱스 도우미가 추가됨
Version 2.292.7
Added
THPDFPageLabelStyle,THotPDF.SetPageLabel, 5가지 스타일별 페이지 레이블 도우미,THotPDF.ClearPageLabels,THotPDF.RegisterArticleThread및THPDFPage.AddArticleBead를 통한 생성된 문서 페이지 레이블 작성 및 문서 스레드 비드(Article Thread Beads)가 추가됨
Version 2.292.6
Added
THPDFActionBuilder는 이제ShowLayer,HideLayer및ToggleLayer도우미와 PDF/A/PDF/X 동작 제한 사항이 포함된Thread,Sound,Movie,Rendition,SetOCGState레이어 가시성,Trans페이지 전환 및GoTo3DView용 고급 액션 사전을 빌드함
Version 2.292.5
Added
THPDFPage.SetAnnotationAdditionalAction및THotPDF.SetFormFieldAdditionalAction은 이제 선택한 트리거만 바꾸고 PDF/A/PDF/X 동작 제한을 보존하면서 주석 및 AcroForm/AA트리거 사전에 재사용 가능한THPDFActionBuilder체인을 연결함
Version 2.292.4
Added
THPDFNamesFacade는 이제 로드된 JavaScript 및 명명된 대상에 대한 JavaScript 함수 래퍼 및 배열 스냅샷을 추가하며,THPDFActionBuilder는 이제 필드 범위의 submit/reset 액션 및 원격 페이지 대상을 빌드하고, FastReport 어댑터의 기본 객체 모드는 메모 배경, 텍스트 정렬 및 프레임 스타일을 보존함
Version 2.292.3
Added
THPDFActionBuilder는 이제 원격 명명된 대상 및 Launch 액션을 지원하며, FastReport 어댑터의 기본 객체 모드는 뷰 URL을 HotPDF URI 링크 주석에 매핑함
Version 2.292.2
Added
THPDFActionBuilder는 이제 직접 페이지를 대상으로 하는GoToPage액션을 지원하고, EMF/WMF 파일 이름 도우미는 호출당THPDFEmfOptions를 수락하며, FastReport 어댑터의 기본 객체 모드는 그림 뷰를 HotPDF 이미지 XObject에 직접 매핑함
Version 2.292.1
Added
- EMF/WMF 렌더링은 이제
ShowEnhancedMetafile,EnhancedShowMetafile및 향상된ShowMetafile오버로드를 통해 호출당THPDFEmfOptions재정의를 지원하므로, 단일 메타파일이 문서 전체의THotPDF.EmfOptions를 변경하지 않고 압축, 배율, 참조 DC, 스트레치 모드 및 확장 펜 동작을 선택할 수 있음
Version 2.274.1
Fixed
d1로 선언된Type3글리프 프로시저는 이제 PDF 사양에서 요구하는 대로 프로시저 내부의 색상 선택 연산자를 무시하고 항상 텍스트의 현재 채우기 색상으로 칠함;d0으로 선언된 글리프는 고유의 색상을 유지함- 이 억제는 글리프 재생(중첩된 폼 객체 포함) 내부에서만 적용되며 주변 페이지 콘텐츠에 의해 선택된 색상에는 영향을 미치지 않음
Version 2.274.0
Added
d1바운딩 박스를 선언하는Type3글리프 프로시저는 이제 페이지 렌더링 중에 해당 박스로 클리핑되므로, 잘못 형성되거나 오버사이즈 글리프 프로시저가 더 이상 선언된 범위를 벗어나 그릴 수 없음d0형식을 사용하는 글리프는 무제한 동작을 유지하며 퇴화된(비어 있거나 반전된) 박스는 글리프를 지우는 대신 무시됨
Version 2.273.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
/Encodingdictionaries:/DifferencesAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/DifferencesAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
uniXXXXforms andgNN/glyphNNAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - The predefined
StandardEncoding,WinAnsiEncodingandMacRomanEncodingAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/DifferencesAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Compact (
Type1CAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.272.0
Added
- 포함된 글리프 페이지 렌더링은 이제 컴팩트한
FontFile3Type1C프로그램이 포함된 단순(non-CID)Type1글꼴을 처리함: 1바이트 문자 코드는 글꼴 프로그램의 내장 인코딩을 통해 실제 Type 2 charstring 아웃라인으로 해석되어 CID 및 단순 글꼴 종류 전체에서 포함된 아웃라인 지원을 완료함 - 단순
TrueType글꼴은FontFile2가 없을 때 추가로FontFile3OpenType프로그램(CFF 형식)을 수락함 - 내장 인코딩이 매핑할 수 없는 문자 코드는 글리프별 시스템 글꼴 폴백을 유지하며, 사전 정의된 Standard/Expert 인코딩에만 의존하는 글꼴은 기존 전체 실행 폴백을 계속 사용함
Version 2.271.0
Added
- 페이지 렌더링은 이제
Type3글꼴을 지원함: 각 글리프의 콘텐츠 스트림 프로시저는 글꼴 행렬, 글꼴 크기, 텍스트 행렬 및 현재 변환이 구성된 상태로 렌더러를 통해 재생되므로 스탬프, 바코드 글꼴 및 기타 프로시저로 그려진 글리프가 무시되는 대신 렌더링된 출력에 표시됨 /Encoding/Differences맵은 문자 코드를 글리프 프로시저에 바인딩하고 글리프 공간/Widths는/FontMatrix를 통해 해석되므로 비표준 글리프 좌표계에 대해 진행 너비가 올바르게 유지됨- 글리프 프로시저는 글꼴 자체의
/Resources사전을 참조할 수 있으며(페이지 리소스로 폴백됨) Form XObject와 동일한 재귀 가드로 보호됨
Version 2.270.0
Added
- 포함된 글리프 페이지 렌더링은 이제 단순(non-CID)
TrueType글꼴을 처리함: 1바이트 문자 코드는 포함된 글꼴 프로그램 자체의cmap테이블을 통해 글리프에 매핑되므로, 일반 포함된 TrueType 글꼴을 사용하는 페이지는 유사한 이름의 시스템 글꼴 대신 정확한 글리프 모양으로 렌더링됨 cmap조회는 작성 파이프라인의 폴백 동작과 일치하도록 유니코드(포맷 4 및 포맷 12)를 가장 먼저 검색한 다음F000사용자 정의 영역 미러가 있는 기호 인코딩 서브테이블, 레거시 Macintosh 서브테이블(포맷 0 및 6) 순으로 견고한 서브테이블 체인을 따름- 포함된
cmap이 매핑할 수 없는 문자 코드는 글리프별 기존 시스템 글꼴 그리기 방식으로 폴백되므로, 혼합되거나 부분적으로 서브셋 지정된 글꼴이 텍스트 손실 없이 원만하게 저하됨
Version 2.269.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Type0/CIDFontType0fonts with aFontFile3program (CIDFontType0C,Type1C, or anOpenTypeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
FDArray/FDSelect) is honoured - TrueType (
FontFile2) and CFF (FontFile3API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.268.0
Added
- 포함된 글리프 페이지 렌더링: 포함된 TrueType 프로그램(
FontFile2)이 있는Type0/CIDFontType2글꼴의 텍스트는 유사한 이름의 시스템 글꼴로 대체하는 대신 글꼴의 실제 글리프 아웃라인(2차 곡선, 묵시적 온커브 포인트 및 복합 글리프가 채워진 벡터 경로로 재생됨)에서 렌더링됨 - 서브셋 포함 글꼴을 처리하며
Identity및 명시적 스트림CIDToGIDMap레이아웃을 모두 지원함; HotPDF 자체 유니코드 파이프라인에서 생성된 문서가 이제 정확하게 포함된 글리프 모양과 함께RenderLoadedPageToBitmap을 통해 왕복 처리됨 - CID 진행은 이제
/W및/DW너비 항목을 존중하며 2바이트Identity-H코드가 올바르게 이동하여 렌더링된 출력에서 CID 키 방식 글꼴의 텍스트 위치 지정을 수정함 - 사용할 수 있는 포함 프로그램이 없는 글꼴(CFF 형식
FontFile3, 매핑 실패)은 기존 시스템 글꼴 폴백을 유지함
Version 2.267.0
Added
- 페이지 렌더링을 위한 디코딩된 이미지 캐시: 페이지 간에 반복되는 이미지 XObject(로고, 레터헤드, 워터마크 이미지)는 이제 그릴 때마다 디코딩하는 대신 문서 로드당 한 번만 디코딩하여, 공유 이미지 페이지의 렌더링 시간을 거의 절반으로 줄이고 이에 따라 다중 페이지 TIFF 내보내기 속도를 높임
- 캐시는 LRU(최근에 사용되지 않음) 제거 정책과 함께
ImageCacheMaxBytes(기본 32MB)로 제한되며, 문서가 로드될 때 자동으로 지워지고, 제자리 편집 후InvalidateRenderedPageCache와 함께 비워짐 - 새로운 재사용 가능한
THPDFWeightedCache(유닛HPDFCache)는 호스트 애플리케이션이 리소스 소모가 큰 중간 데이터 캐싱에 사용할 수 있도록 히트/미스 통계 및 SHA-256 콘텐츠 해시 키 도우미가 포함된 바이트 할당형 MRU(최근에 사용됨) 캐시임
Version 2.266.0
Added
RegisterUnicodeTTF의 기호 및 레거시 글꼴 지원: 기호 문자 맵만 있는 글꼴(Wingdings, Webdings 및 유사한 (3,0)-cmap 글꼴)은 이제 모든 문자를.notdef로 분석하는 대신 작동 가능한 코드포인트 맵으로 등록됨- 기호 코드포인트는 기본
U+F0xx범위와 일반 ASCII('A'는U+F041과 동일한 글리프에 도달함)를 통해 모두 접근할 수 있으며, 이는 뷰어가 기호로 인코딩된 텍스트를 처리하는 방식과 일치함 - 문자 맵이 포맷 6(트리밍된 테이블) 또는 포맷 0(바이트 테이블) 서브테이블만 제공하는 레거시 글꼴은 이제 해당 서브테이블로 폴백되므로 오래된 Mac 계열 글꼴이 올바르게 포함됨; 기본 유니코드 포맷 4 / 포맷 12 경로는 변경되지 않음
Version 2.265.0
Added
- 렌더링된 페이지 캐시:
RenderLoadedPageToBitmapCached는 최근 렌더링된 페이지를 페이지 및 DPI별로 키 지정하여 유지하므로, 동일한 페이지를 다시 렌더링(페이지 미리보기, 썸네일, 반복 내보내기)할 때 콘텐츠 스트림을 다시 해석하는 대신 마이크로초 단위로 반환함 — 캐시 히트는 일반적으로 수천 배 더 빠름 - 캐시는 MRU(최근에 사용됨) 순서로 최대
RenderCacheCapacity페이지(기본 8)를 보유하고 호출마다 독립적인 호출자 소유 비트맵을 반환함. 새 문서를 로드하면 자동으로 캐시가 지워지고, 제자리 페이지 편집 후InvalidateRenderedPageCache가 캐시를 지움
Version 2.264.0
Added
- 서식 있는 텍스트 출력:
THPDFPage.TextOutHTML은 HTML 하위 세트 — 중첩된<b>,<i>,<u>,<s>,<br>및<font size color face>— 로 서식이 지정된 문자열을 렌더링하므로 스타일이 지정된 단락에 스타일 변경당 개별SetFont/TextOut호출을 요구하지 않음 - 한 행의 혼합된 글꼴 크기는 공통 기준선을 공유하며(행의 가장 큰 글꼴이 이를 설정함) 각 행의 행간은 가장 큰 글꼴을 따라 본문 텍스트와 혼합된 제목에 대해 타이포그래피적으로 올바른 출력을 제공함
- 색상은
#RRGGBB및 16가지 표준 HTML 색상 이름을 수락함; 엔티티&<>" 및 숫자&#N;(보조 평면 코드포인트 포함)가 디코딩됨 - 호출은 후속 행이 계속될 Y 좌표를 반환하므로 연속적인
TextOutHTML블록이 자연스럽게 스택됨
Version 2.263.0
Added
- 레이아웃 보존 텍스트 추출:
ExtractLoadedPageTextLayout은 페이지의 시각적 배치를 일반 텍스트로 재구성함 — 글리프는 기준선으로 클러스터링되고 수평 / 수직 공백은 문자 격자에 재현되므로 열, 들여쓰기 및 테이블 정렬이 출력에서 유지됨 - 동일한 기준선의 텍스트 실행 사이의 넓은 간격은 공백 실행이 되고 큰 기준선 간격은 빈 행이 되어, 결과를 디핑(Diff), 그레핑(Grep) 및 위치 정렬에 의존하는 텍스트 분석 파이프라인에 피딩하는 데 적합하게 만듦
- 기존
ExtractLoadedPageText독서 흐름 추출은 변경되지 않음; 텍스트 내용만 중요할 때는 기존 방식을, 레이아웃이 중요할 때는 새 호출을 선택할 수 있음
Version 2.262.0
Added
- 전체 트리 북마크 검색:
FindLoadedOutlineByTitle은 로드된 문서의 전체 아웃라인 계층 구조(최상위 장뿐만 아니라 모든 중첩 레벨)를 탐색하고, 선택적인 부분 및 대소문자 일치와 함께 일치하는 북마크의 대상 페이지를 해석함 - 직접
/Dest대상 및GoTo액션 대상이 모두 페이지 인덱스로 해석되므로 발견된 북마크로 즉시 이동할 수 있음 GetLoadedOutlineTitlesDeep은 기존의 최상위 전용 열거를 보완하여 트리의 모든 북마크 제목을 깊이 우선(독서) 순서로 열거함
Version 2.261.0
Added
- 배치 첨부파일 추출:
SaveAllLoadedEmbeddedFiles는 한 번의 호출로 로드된 문서의 모든 포함된 파일을 대상 디렉토리에 쓰고 디렉토리가 없는 경우 생성하며 작성된 파일 수를 반환함 - 첨부파일 이름은 사용 전에 위생 처리됨 — 경로 구분 기호 및 파일 시스템이 거부하는 문자는 밑줄로 변환되어 문서가 지정된 디렉토리 외부로 쓸 수 없도록 함 — 또한 중복된 이름은 확장자 전에 자동으로
_CopyN접미사를 수신함
Version 2.260.0
Added
- 로드된 문서용 다중 페이지 TIFF 내보내기:
SaveLoadedPagesToTiff는 선택된 페이지를 렌더링하고 페이지당 하나의 이미지가 포함된 단일 TIFF 6.0 파일로 작성함 — 이는 문서 아카이빙, 스캔 및 팩스 파이프라인에서 기대하는 교환 형식임 - 페이지는 친숙한 1부터 시작하는 범위 구문(
"1,3-5,7-", 비어 있는 경우 모든 페이지 선택)으로 선택되고 호출자가 선택한 DPI에서 렌더링되며, 선택적 Deflate 압축(기본적으로 활성화됨, 압축되지 않은 출력의 경우False전달)과 함께 24비트 RGB로 저장됨 SaveLoadedPagesToTiffStream은 동일한 다중 페이지 TIFF를 임의의TStream에 작성하며, 두 호출 모두 실제로 작성된 페이지 수를 반환함
Version 2.259.0
Added
- 로드된 문서용 디지털 서명 검증:
VerifyLoadedSignature는/ByteRange다이제스트를 다시 계산하고 서명에 포함된 인증서에 대해 RSA 서명을 암호화 방식으로 확인하여 정확한 판정(유효함, 서명 후 문서 수정됨, 서명 무효함, 지원되지 않는 알고리즘 또는 잘못 구성된 컨테이너)을 보고함 GetLoadedSignatureInfo는 문서 바이트를 건드리지 않고 각 서명 필드에 대해 서명자 이름, 주체 및 발급자 고유 이름, 인증서 일련 번호 및 유효 기간, 서명 시간, 해시 알고리즘, 하위 필터 및/Reason//Location//ContactInfo를 반환함VerifyLoadedSignatureEx는 두 가지를 결합함: 한 번의 호출로 검증하고 서명이 전체 문서를 포함하는지 여부를 포함하여 채워진 정보 레코드를 반환함;VerifyAllLoadedSignatures는 모든 서명 필드를 한 번에 확인함- 지원되는 알고리즘: RSA(PKCS#1 v1.5)와 SHA-1, SHA-256, SHA-384 또는 SHA-512 다이제스트로, 서명된 속성 유무에 관계없이
adbe.pkcs7.detached및ETSI.CAdES.detached서명을 포괄함 TStream오버로드는 스트림에서 로드된 문서를 검증함; 인증서 체인 및 신뢰 검증은 여전히 호출자의 책임으로 유지됨
Version 2.258.0
Added
- 고성능 외부 JBIG2 디코더는 이제 32비트(Win32) 빌드에서도 사용할 수 있음(이전에는 64비트 전용이었음).
/JBIG2Decode이미지가 포함된 PDF 파일 로드 및ExtractLoadedImage는 기본적으로 두 플랫폼 모두에서 이를 사용하며 일반적으로 네이티브 Pascal 디코더보다 3–9배 빠르게 디코딩함 UseExternalJBIG2Decoder스위치는 32비트와 64비트에서 동일하게 작동함: 네이티브 Pascal 디코더를 선택하려면False로 설정할 수 있음
Version 2.257.1
Fixed
- 64비트(Win64) 빌드에서 고성능 JBIG2 인코더 백엔드를 복원함: 32비트 백엔드를 연결하는 동안 도입된 플랫폼 검사 회귀로 인해 외부 인코더가 Win64 빌드에서 컴파일 제외되어
icJBIG2압축을 사용하는AddImage가 기본 Pascal MMR 인코더로 자동으로 폴백되었던 문제를 수정함. Win64는 이제 산술 백엔드를 통해 다시 인코딩하며 일반적으로 동일하거나 더 나은 압축률과 함께 4–8배 더 빠름; MMR 폴백을 선택하는 명시적인 방법은 여전히THPDFJBIG2Options.UseExternalEncoder := False임
Version 2.257.0
Added
- 고성능 JBIG2 인코더 백엔드는 이제 32비트(Win32) 빌드에서도 사용할 수 있음(이전에는 64비트 전용이었음).
icJBIG2압축이 포함된AddImage는 기본적으로 두 플랫폼 모두에서 이를 사용하며 네이티브 Pascal 폴백보다 4–7배 빠르게 표준 준수 산술 코딩된 JBIG2 스트림을 생성함 THPDFJBIG2Options.UseExternalEncoder스위치는 32비트와 64비트에서 동일하게 작동함: 네이티브 Pascal MMR 인코더로 폴백하려면False로 설정할 수 있음
Fixed
- 정적으로 링크된 인코더 지원 계층에서 Win32 빌드에서 JBIG2 인코더 백엔드를 사용할 수 없게 만들었던 일련의 32비트 전용 크래시(액세스 바이올레이션) 문제를 해결함. 인코딩 출력은 64비트 백엔드와 바이트 단위로 동일함이 확인되었으며 번들 및 네이티브 JBIG2 디코더를 통해 손실 없이 왕복 처리됨
Version 2.256.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
<fileattachment>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<data>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<sound>(embedded/Soundstream with/R /B /C /Eaudio params),<redact>(a standard/RedactAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/OverlayText,/DA,/Qand/ICAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보RedactLoadedRectmask), and<link>(<OnActivation><Action>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<Dest>named destinations) - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
HPDFXFDFEncodeBase64/HPDFXFDFDecodeBase64API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보HPDFXFAAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Extended
THPDFXFDFAccessAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보ResolveStream/NewIndirectStream/ReadStreamBytes) wired toTHotPDF.ResolveLoadedStream/NewIndirectStream/HPDFReadStreamBytes - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
HotPDF.XFDFTestsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.255.0
추가됨
- Added XFDF (ISO 19444-1) import/export:
THotPDF.ExportLoadedFormToXFDF/ImportLoadedFormFromXFDFAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<value>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<value>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Added
THotPDF.ExportLoadedAnnotationsToXFDF/ImportLoadedAnnotationsFromXFDFAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Added
Lib/HPDFXFDFXml.pasAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFXFDFNodeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Added
Lib/HPDFXFDF.pasAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보HPDFDocAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFXFDFAccess) bound by HPDFDoc's implementation section (same pattern asHPDFTextExtraction). Ships colour#RRGGBBAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Added
HotPDF.XFDFTestsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFDictionaryObjectAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.254.0
추가됨
- Added read-side structured invoice extraction:
HPDFFacturXXMLElementTextAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보HPDFFacturXInvoiceSummaryFromXMLandTHotPDF.GetLoadedInvoiceSummaryreturn aTHPDFFacturXInvoiceSummaryAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보BuyerTradePartyAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보ram:Name - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
THotPDF.GetLoadedPDFAIssuesAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보ValidateFacturXInvoiceAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보fxviFontsNotEmbedded), missing OutputIntent (fxviMissingOutputIntentAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보fxviEncryptedDocumentAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFFacturXValidationIssueenum - Added embedded-attachment classification via
THotPDF.GetLoadedFacturXAttachmentsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFFacturXAttachmentRoleAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
THotPDF.AddEDIFACTSupplementaryFileAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보factur-xedifact.edi(MIMEtext/plain, relationshipAlternative),HPDFIsFacturXEDIFACTFileNameAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보DetectFacturXInvoiceAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFFacturXInvoiceInfo.EDIFACTFileNamefield - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
PDFAPartnow recognises'4'/'4F'(emittingpdfaid:part=4) andPDFAConformanceLevelAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보IsPDFA2OrLaterautomatically covers part 4 so existing restriction checks apply - Added Principle 4 visual/XML consistency check as
THotPDF.ValidateVisualXmlConsistencyAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
변경됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
ShowValidationReportAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.253.1
Fixed
- E-Invoice 데모 소스를 회귀 테스트 어설션과 정렬함:
TInvoiceForm = class(TForm)는 이제 표준 공백 선언을 사용하고,IsDefaultOutputFile은 루프 반복당 중복되는GetProfile호출을 방지하면서 테스트가 확인하는 정확한string(Profile.OutputBaseName)+ '.pdf'리터럴을 소스에 포함하도록 반복당Profile로컬 변수(GetProfile(I)에서 설정됨)를 도입함. 이로써 오랫동안 지속된EInvoiceDemoDefaultOutputUsesProfileSuffix/EInvoiceDemoUsesProjectFileAndOutputNames두 가지 실패 문제를 해결함
Version 2.253.0
Added
- 로드된 문서 페이지 렌더링 추가:
THotPDF.RenderLoadedPageToBitmap(PageIndex, DPI)는 전체 그래픽 상태(CTM, 색상, 선 속성, 텍스트 상태) 및 현재 경로에 대해/Contents스트림을 해석하여 페이지를 24비트 RGB GDITBitmap(호출자가 해제)으로 그리고 경로 / 텍스트 / 이미지 브리지를 통해 모든 연산자를 GDI로 피딩함. 지원되는 연산자 세트는 일반적인 문서 PDF 하위 세트를 포괄함: 텍스트(BT ET Tf Tc Tw Tz TL Tr Ts Td TD Tm T* Tj TJ ' "), 경로 구성 및 그리기(m l c v y re h S s f F f* B b B* b* n W W*), 색상(rg RG g G k K), 그래픽 상태(q Q cm w) 및 이미지와 한 수준의 Form XObject 재귀를 위한Do임. 처리되는 색상 공간은 DeviceRGB / Gray / CMYK 및 Indexed이며, CalRGB / Lab / ICCBased는 최선책 근사치로 수준 저하됨. 6개의 새 유닛(HPDFRenderMatrix,HPDFRenderGraphicsState,HPDFRenderColorSpace,HPDFRenderPath,HPDFRenderFontMetrics,HPDFPageRenderer)은 함수 포인터 접근자 레코드를 통해 렌더러를HPDFDoc과 분리된 상태로 유지함 - 텍스트 페이지 렌더링(비어 있지 않은 비트맵), 페이지 크기 및 DPI 일치, 범위를 벗어난 페이지 인덱스 반환 nil을 포괄하는
HotPDF.RenderTests(3 DUnitX 케이스)를 추가하여 Win32 및 Win64에서 모두 통과함
Version 2.252.0
Added
- 로드된 문서 텍스트 대체 추가:
THotPDF.ReplaceLoadedPageText및ReplaceLoadedDocumentText는 글꼴의 문자 코드 테이블(HPDFEncodeUnicode)을 통해 대체 텍스트를 역인코딩하고 결과를 각 문자열 피연산자의 일치하는 코드 바이트 범위에만 바인딩하여 모든 검색어 발생 위치를 다시 작성함 — 일치하지 않는 바이트, 토큰 간 공백 및 연산자는 그대로 보존됨. 각/Contents스트림은 개별적으로 처리되므로 다중 스트림 페이지가 올바른 형식을 유지함; 압축된 스트림은 편집을 위해 압축 해제되고 압축되지 않은 상태로 저장됨(/Filter항목이 드롭되어 더 큰 파일 허용).ReplaceCount는 수행된 피연산자 재작성 횟수를 보고함 HPDFTextExtraction에HPDFEncodeUnicode추가:HPDFDecodeCharCode의 역행으로, 동일한 전략 체인을 역순으로 탐색하여(ToUnicode bfchar/bfrange, Encoding stream cidchar/cidrange + CIDToUnicode, Type0 CIDToGID/CIDIdentity, 사전 정의된 WinAnsi/MacRoman 테이블) 유니코드 코드 포인트를 글꼴의 문자 코드 바이트로 다시 매핑하여 디코더가 분석할 수 있는 모든 코드에 대해 인코딩→디코딩 왕복 처리가 안정적으로 수행됨HPDFContentStream에HPDFSerializeStringLiteral/HPDFSerializeHexString추가: 토크나이저의ReadLiteralString/ReadHexString을 미러링하여 원시 문자 코드 바이트를 PDF 콘텐츠 스트림 문자열 리터럴(()\및 8진수 이스케이프가 포함된(...)) 또는 16진수 문자열(<...>)로 다시 직렬화함으로써 파싱 → 재직렬화 왕복이 깔끔하게 수행됨HPDFContentStream에HPDFMatchGlyphs추가: 검색 및 대체 경로가 하나의 매칭 코어를 공유하도록SearchLoadedPageText에서 추출된 순수 함수 글리프 시퀀스 매처임THPDFPageFontResolver.LookupDecoder추가: 대체 경로가 인터프리터 루프 외부에서 역인코딩을 위해 글꼴 디코더 사본을 얻을 수 있도록 함- 직렬화기 왕복(리터럴/헥스/상위 바이트 이스케이프) 및 엔드투엔드 동일 길이, 다른 길이, 다중 일치, 압축 스트림 성능 저하 및 누락된 검색어 시나리오를 포괄하는
HotPDF.ReplaceTests(8 DUnitX 케이스)를 추가하여 Win32 및 Win64에서 모두 통과함
Version 2.251.0
Added
- 로드된 문서 텍스트 검색 추가:
THotPDF.SearchLoadedPageText및SearchLoadedDocumentText는ExtractLoadedPageGlyphs에 의해 생성된 유니코드 글리프 시퀀스를 매칭하여 검색어의 모든 발생 위치를 찾고, 글리프 범위, 사용자 공간 원점 및 너비, 소스 토큰/항목 인덱스를 포함하는THPDFTextMatchArray를 반환하여 호출자가 나중에 피연산자 바이트를 다시 작성할 수 있도록 함. 대소문자 구분 없는 매칭은 Delphi 5–XE 툴체인 전체에서 동일한 동작을 유지하도록 ASCII 전용 폴딩을 사용함 - 바이트 오프셋 추적으로 콘텐츠 스트림 토크나이저 및 인터프리터를 확장함:
THPDFContentToken및THPDFArrayItem은 이제 작성된 그대로 각 피연산자에 걸쳐StartOfs/EndOfs를 기록하며(()또는<>구분 기호 포함), 각THPDFGlyphRecord는 이를 생성한 피연산자와 코드 유닛을 가리키는TokenIndex/ItemIndex/ByteOffset을 전달하여 제자리 텍스트 대체의 기초를 마련함 - 리터럴/헥스/TJ 배열 피연산자에 대한 오프셋 범위 재구성, 글리프→토큰 역참조, 엔드투엔드 단일/대소문자 구분 없음/다중 일치/문서 전체 검색 및 빈 검색어 및 누락된 검색어 경계 케이스를 포괄하는
HotPDF.SearchTests(10 DUnitX 케이스)를 추가하여 Win32 및 Win64에서 모두 통과함
Version 2.250.0
Fixed
ImportLoadedFormFromFDF를 가구화함: 바이트 수준의/T+공백 +/V+공백 스캐너(/Type /Catalog및 기타/T*토큰을 필드 이름으로 오분석하고, 다음(까지 객체 간에 바이트를 삼켜버리며 16진수 문자열 값을 누락함)를 구조적 파싱으로 대체함 —/Fields배열 내부의 각<< /T ... /V ... >>field 사전은 괄호 깊이 추적(리터럴 및 16진수 문자열 리터럴 존중)에 의해 슬라이스되어HPDFParserParseSimpleDictionary에 전달되어 문자열, 16진수 문자열, 이름 및 숫자/V값이 이제 모두 올바르게 왕복 처리됨- UTF-16BE 16진수 문자열(
<FEFF...>)로 전달되는/V값은 이제 가져올 때 16진수 형식을 유지함:HPDFSetDictFormValue는FEFFBOM 접두사를 감지하고IsHexadecimal을 설정하므로 작성기는 깨진 리터럴(FEFF...)대신<FEFF...>를 다시 내보냄; 확인란 / 라디오 이름 값(/Yes,/Off)은 기존의 유형 수정 경로가 이미THPDFNameObject슬롯을 유지하기 때문에 이름으로 보존됨
Added
- 텍스트 필드에 대한 내보내기→가져오기 왕복, 확인란 이름-값 유형 보존, 알 수 없는 필드 이름의 조용한 건너뛰기, UTF-16BE 16진수 값 왕복 및
/Type키워드 노이즈 회귀를 포괄하는HotPDF.FDFTests(5 DUnitX 케이스)를 추가하여 Win32 및 Win64에서 모두 통과함
Version 2.249.0
Added
- ZUGFeRD 2.5 / Factur-X 1.09 메타데이터 지원 추가:
HPDFIsFacturXVersion은2p5버전 별칭을 허용하고, 새로운HPDFFacturXNormalizeVersion도우미는 Factur-X 1.09 사양 6.3.2에 따라 생성된 XMP에서 이를 다시2p0으로 매핑하며(XMP 확장 스키마 버전은 XML 데이터 사양 버전과 분리됨),HPDFFacturXFileNameOK,HPDFFacturXXMLGuidelineOK및 XMP 스키마 이름/네임스페이스 URI/접두사 삼중 세트는2p5를2p0과 동일하게 처리함; E-Invoice 샘플은 공식 2.5 샘플 코퍼스에 대해 유효성이 검증된 7번째 프로필 항목(ZUGFeRD 2.5 / Factur-X 1.09, EN 16931)을 획득함 - Factur-X 1.09 사양 6.4에 따른 UBL 보조 첨부파일 지원 추가:
THotPDF.AddUBLSupplementaryFile은 기본 CII 송장과 함께Alternative관계 및application/xmlMIME을 갖는 보조factur-xubl.xml관련 파일로 UBL 표기를 포함하며(기존AddPDFA3AssociatedFile파이프라인에 위임),HPDFIsFacturXUBLFileName이 해당 파일 이름을 인식하고,DetectFacturXInvoice가 새로운THPDFFacturXInvoiceInfo.UBLFileName필드에 이를 기록하고, E-Invoice 샘플은 콤팩트한 UBL 2.1 EN 16931 스켈레톤을 출력하는BuildUBLSupplementaryXML과 함께 확인란을 통해 이중 포함을 토글함 - 새로운
HPDFEInvoiceValidator유닛으로 선택적 EN 16931 Schematron 비즈니스 규칙 검증 추가:Lib/resources/Schematron/아래에 5가지 공식 Factur-X 1.09 규칙 파일(MINIMUM/BASIC WL/BASIC/EN16931/EXTENDED)을 동봉하고,ValidateFacturXInvoice를 통해 컨테이너 검사를 실행한 다음 내장된 XML에 대해 모든 규칙을 평가하는HPDFValidateEInvoice를 노출함; MSXML 지원 엔진(XE2+ 전용, XPath 1.0 하위 세트)은 XPath 2.0 어설션을skipped로 표시하는 반면, Delphi 7은 컨테이너 판정에 영향을 주지 않고 엔진을 사용할 수 없음으로 보고하는 스텁을 컴파일함; E-Invoice 샘플 및EInvoiceValidation헤드리스 하네스는 이제 외부 검증기 보고서와 함께 내부 규칙 결과를 렌더링함
Changed
AddFacturXAssociatedFile은 이제 XMP를 작성하기 전에HPDFFacturXNormalizeVersion을 통해Version인수를 정규화하므로,2p5호출자는 기존1.0/2p0동작을 변경하지 않고 사양 준수2p0XMP 토큰을 내보냄- E-Invoice 샘플
GenerateInvoicePDF는 선택적AttachUBL매개변수(기본값은False이며 기존 호출 지점을 유지함)를 획득하고 UBL 첨부파일이 요청될 때 기본 출력 이름에-withUBL을 태그 지정함
Version 2.248.0
新增
- 加固 E-Invoice 例程的 profile 索引模型:把
GetProfile从 1 基 case 加else兜底改为显式 0 基双射(0 BASIC..5 EN 16931),下拉框顺序同步重排,默认仍为 EN 16931;补全 E-Invoice 例程 README 对 ZUGFeRD 1.0 COMFORT 和 ZUGFeRD 2.0 BASIC 两个 profile 的输出文件、校验状态和运行输出描述
Version 2.247.0
新增
- 新增已加载文档的 22 项创建/写入 API(第九轮,实现 PDFtoolkit 的中等工程量特性,全部在已加载对象图上构造字典并注册到 AcroForm/Page):表单字段创建——文本字段(
AddLoadedTextField)、复选框(AddLoadedCheckBox)、组合框(AddLoadedComboBox)、列表框(AddLoadedListBox)、按钮(AddLoadedPushButton)、签名字段(AddLoadedSignatureField),自动建立/补全 AcroForm 与/NeedAppearances;注释子类型——橡皮图章(AddLoadedStampAnnotation)、高亮/下划线/波浪线/删除线(AddLoadedHighlightAnnotation)、矩形/圆形(AddLoadedSquareAnnotation)、直线(AddLoadedLineAnnotation)、墨迹(AddLoadedInkAnnotation)、多边形/折线(AddLoadedPolygonAnnotation)、插入符(AddLoadedCaretAnnotation);FDF 表单数据互换(ExportLoadedFormToFDF/ImportLoadedFormFromFDF);N-up 拼版(StitchLoadedPage/StitchLoadedPageSideBySide);脱敏遮罩(RedactLoadedRect)
Version 2.246.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
GetLoadedFormFieldOption/GetLoadedFormFieldOptions)/write (SetLoadedFormFieldOptions), field default-value read/write (GetLoadedFormFieldDefaultValue/SetLoadedFormFieldDefaultValue), field reset (ResetLoadedFormField), text-note annotation (AddLoadedTextAnnotation), free-text annotation (AddLoadedFreeTextAnnotation), annotation color (SetLoadedAnnotationColor), cross-page annotation move (MoveLoadedAnnotation), bookmark color (SetLoadedOutlineColor)/style (SetLoadedOutlineStyle)/delete (RemoveLoadedOutline), document Trapped flag (SetLoadedTrapped), optional-content group visibility (SetLoadedOCGVisibility), page-label write (SetLoadedPageLabel)
Version 2.245.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
SetLoadedAnnotationFlagsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보AddLoadedLinkAnnotation), bookmark expand/collapse state (SetLoadedOutlineOpen), document open-action (SetLoadedOpenActionPage), form-field export-value read/write (SetLoadedFormFieldExportValue/GetLoadedFormFieldExportValue), form-field tooltip (SetLoadedFormFieldTooltip/GetLoadedFormFieldTooltip), form-field border width/background color (SetLoadedFormFieldBorderWidth/BackgroundColor), clear all JavaScript (RemoveLoadedJavaScriptAll), page content copy (CopyLoadedPage)
Version 2.244.0
新增
- 新增已加载文档的 15 项写入/编辑 API(第二轮写入,借鉴 PDFtoolkit 的
RemoveAnnotation/SetRotationAngle等模式):页面旋转写入(SetLoadedPageRotation)、注释删除/内容修改/清空(RemoveLoadedAnnotation/SetLoadedAnnotationContents/ClearLoadedAnnotations)、查看器偏好写入(SetLoadedViewerPreferences)、日期写入(SetLoadedCreationDate/ModDate)、Catalog 版本写入(SetLoadedCatalogVersion)、页面持续时间/过渡效果写入(SetLoadedPageDuration/Transition)、书签标题修改(SetLoadedOutlineTitle)、嵌入文件删除(RemoveLoadedEmbeddedFile)、表单字段值写入(SetLoadedFormFieldValueByIndex/ByName)
Version 2.243.0
新增
- 新增已加载文档的 14 项写入/编辑 API(首次突破只读检视,借鉴 PDFtoolkit 的
SetXMLMetadata/InsertAnnotation/Stitch等模式):页面模式/布局写入(SetLoadedPageMode/PageLayout)、文档语言写入(SetLoadedLanguage)、文档信息写入(SetLoadedCreator/Producer/Title/Author/Subject/Keywords)、Info 键删除(RemoveLoadedInfoKey)、XMP 元数据写入(SetLoadedXMPMetadata)、文档级 JavaScript 增删(AddLoadedDocumentJavaScript/RemoveLoadedJavaScript)、页面框写入(SetLoadedPageBox)。这些方法修改已加载的对象图,调用SaveLoadedDocument持久化
Version 2.242.0
新增
- 新增已加载文档的 15 项检视 API(第四轮 PDFtoolkit 功能差距扫除):页面模式/布局读取(
GetLoadedPageMode/PageLayout)、Catalog 版本(GetLoadedCatalogVersion)、页面对象号(GetLoadedPageObjectNumber)、表单字段标志位组合(GetLoadedFormFieldFlags)/NoExport 检测(IsFormFieldNoExport)、注释标志解码(IsLoadedAnnotationHidden/Printable/Locked)、度量单位转换(PointsToMM/MMToPoints/PointsToInches/InchesToPoints/PointsToCm/CmToPoints)
Version 2.241.0
新增
- 新增已加载文档的 20 项深度检视 API(第三轮 PDFtoolkit 功能差距扫除):Info 字典键枚举(
GetLoadedInfoKeyCount/KeyName/KeyValue)、表单字段矩形/页索引(GetLoadedFormFieldRect/PageIndex)、注释 URI/弹出框/名称/修改日期(GetLoadedAnnotationURI/PopupRect/Name/ModDate)、书签颜色/样式(GetLoadedOutlineColor/Style)、元数据流检测(HasLoadedMetadata)、Trailer ID(GetLoadedTrailerID)、XRef 类型(GetLoadedXRefType)、最大对象号(GetLoadedMaxObjectNumber)、源文件大小(GetLoadedSourceFileSize)、嵌入字体计数(GetLoadedEmbeddedFontCount)、文档语言(GetLoadedLanguage)、页面持续时间/过渡效果(GetLoadedPageDuration/Transition)、表单字段必填标志(IsFormFieldRequired)
Version 2.240.0
新增
- 新增已加载文档的 20 项深度检视 API(第二轮 PDFtoolkit 功能差距扫除):嵌入文件保存到磁盘(
SaveLoadedEmbeddedFileToDisk)、设置文档信息字段(SetLoadedDocumentInfo)、读取 JavaScript 源码(GetLoadedJavaScriptSource)、命名目标枚举(GetLoadedNamedDestinationCount/Name)、OCG 可见性(GetLoadedOCGVisibility)、页面标签详情(GetLoadedPageLabelInfo)、全文档注释/字体计数(GetLoadedTotalAnnotationCount/TotalFontCount)、PDF/A 与 PDF/X 合规检测(IsLoadedPDFA/IsLoadedPDFX/GetLoadedPDFAVersion/GetLoadedPDFXVersion)、批量便捷方法(GetLoadedOutlineTitles/AllLinkURIs/ImageCountPerPage/AllPageBoxes/FormFieldNames/FormFieldValues)、一键文档摘要(GetLoadedSummary返回页数/注释/字体/图像/表单/签名计数 + 加密/AcroForm/结构树标志)
Version 2.239.0
新增
- 新增已加载文档的 20 项检视 API(PDFtoolkit 功能差距批量扫除):PDF 版本字符串(
GetLoadedPDFVersionString)、线性化检测(IsLoadedLinearized)、XMP 元数据读取(GetLoadedXMPMetadata)、文档级 JavaScript 枚举(GetLoadedJavaScriptCount/Name)、页面标签计数(GetLoadedPageLabelCount)、查看器偏好(GetLoadedViewerPreferences)、结构树检测(HasLoadedStructureTree)、签名字段计数(GetLoadedSignatureFieldCount)、可选内容组(OCG)枚举(GetLoadedOCGCount/Name)、OutputIntent 检测(HasLoadedOutputIntent/GetLoadedOutputIntentInfo)、AcroForm 检测(HasLoadedAcroForm)、创建/修改日期(GetLoadedCreationDate/ModDate)、批量数组便捷方法(GetLoadedEmbeddedFileNames/LinkURIs/AnnotationSubtypes/FontNames返回THPDFAnsiStringArray)
Version 2.238.0
新增
- 新增已加载文档的深度检视 API(8 个只读方法):
GetLoadedPageWidth/GetLoadedPageHeight读取页面尺寸(pt);GetLoadedLinkCount/GetLoadedLinkInfo枚举超链接注释(URI + 矩形);GetLoadedEncryptionInfo查询加密版本、密钥长度、权限标志;GetLoadedEmbeddedFileCount/GetLoadedEmbeddedFileName枚举文档嵌入文件(附件)。这些 API 遍历已加载的对象图但不修改它,仿现有GetLoadedImageInfo/GetLoadedAnnotationInfo模式。LoadedDocInspector例程同步更新,演示页面尺寸/旋转/链接计数、加密状态、嵌入文件清单
Version 2.237.0
新增
- 新增已加载文档的元数据查询 API:
GetLoadedDocumentInfo从 Info 字典读取标题、作者、主题、关键词、创建者、生成器;GetLoadedPageRotation读取页面旋转角度;GetLoadedOutlineCount/GetLoadedOutlineItem枚举书签树的顶层条目(标题 + 目标页索引)。这些都是只读查询,仿现有GetLoadedImageInfo模式,不修改文档对象图
Version 2.236.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
THotPDFmethods:HPDFCMapReaderparses both ToUnicodebeginbfchar/beginbfrangeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보begincidchar/begincidrangeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보HPDFContentStreamAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보BT/ET,Tf,Tj/TJ/'/",Td/TD/Tm/T*,q/Q, inline-imageBI/ID/EIAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보HPDFTextExtractionAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/ToUnicode→/EncodingAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/DescendantFonts/CIDToGIDMap→cid2code.txtAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Added
THotPDF.GetLoadedFontDecoder,THotPDF.ExtractLoadedPageGlyphsandTHotPDF.ExtractLoadedPageTextAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보ExtractLoadedPageTextAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - Added
ExtractTextAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보LoadedDocInspectorread-only console layout
변경됨
HPDFDocnowusesHPDFCMapReader,HPDFContentStreamandHPDFTextExtractionAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THotPDFAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보HPDFParserstandalone-unit pattern (no dpkcontainsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보HPDFDocAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보THPDFFontDocAccessAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보ResolveLoadedDictionary/ResolveLoadedStream/HPDFReadStreamByteshelpers
Version 2.235.1
新增
- 新增
PDFOptimize控制台例程(Delphi):演示生成端 PDF 体积优化,通过同内容、不同压缩设置的多份 PDF 横向对比量化每种策略的收益 —— 文本/矢量文档的cmNonevscmFlateDecode加UseObjectStreams对象流打包、彩色照片的icJpegJpegQuality扫描对比icFlate、双层扫描图的icCCITT42(G4)对比icJBIG2lossless/lossy,控制台打印体积对比表,所有测试图像均在内存合成生成不依赖外部文件,并明确标注 HotPDF 压缩为生成端能力(无法对已加载 PDF 重新压缩)
Version 2.235.0
Added
- 통합판
Stamp데모(Delphi 및 C++Builder) 추가: 기존Modify,MultiPageStamp,Watermark세 데모를 단일 VCL 프로그램으로 통합하여, 파싱 가능한 페이지 범위 위에 개별적으로 켜고 끌 수 있는 스탬프 계층 3단을 겹쳐 씀 —— 콘텐츠 스트림 텍스트 워터마크(AddTextWatermark), 대화형 고무 도장 주석(AddStampAnnotation), 코너 마커 비트맵(AddImage+ShowImage). 페이지 범위 파싱(HPDFParsePageRange)과 네 모서리 배치도 유지됨 - 통합판
PageSizes콘솔 데모 추가: 기존SmallSize,NormalSize,LargeSize세 데모를 하나의 프로그램으로 통합하여, 소형/보통/대형 분류 각각에 대해THPDFPageSize열거값과 커스텀Width/Height치수를 한 번에 열거함
Changed
Security데모 그룹의 5개 개별 프로그램(Encryption,SecurityAES256,DecryptPDF,PFXSignature,SignatureField)을 단일 콘솔 프로그램으로 통합하여 RC4-128 암호화, AES-256 R5/R6 암호화, 비밀번호 복호화, 서명 필드 자리표시자, PFX 서명(PFX 픽스처가 없으면 자동으로 건너뜀)을 아울렀음AddPages와DelPages두 GUI를 단일AddDelPagesGUI로 통합하는 동시에, C++Builder 측의PageMultiSize와AddDelPages를 Delphi와 대등한 풍부함(Size/Orientation/커스텀 폭높이/수량/레이블/진행률)으로 끌어올렸음FontTest글리프 회귀 도구를Demo에서Tests\Delphi\FontTest와Tests\C++Builder\FontTest로 옮겨, 기능 샘플이 아닌 테스트 도구로서의 위치를 명확히 했음
Removed
- 순수 중복인
TiffToPDF데모(Delphi 및 C++Builder) 제거: 해당 기능은ConvertTo의 TIFF 변환 경로로 완전히 대체됨 - C++Builder 측의
CopyPages데모 제거: 해당 기능은 더 완전한PDFmerge로 완전히 대체됨 Logger데모 제거: 이 데모가 보여주던HPDFLogger/HPDFLog런타임 로그 파사드 사용법은 API 문서 토픽 페이지Docs/zh-cn/topics/HPDFLoggerFacade.html로 이관됨(라이브러리 자체의HPDFLogger유닛은 유지하고 샘플 프로젝트만 삭제)
Fixed
- 기존
DelPages(현AddDelPages에 통합)의 짝수 페이지 삭제 알고리즘 수정: 원래 루프가 수축하는 문서 페이지 수를 정적 페이지 수 카운트에 대해 돌려, 실제로 삭제되는 것은 진짜 짝수 페이지가 아니라 인덱스 1..중점 이었음. 이제 가장 큰 짝수 페이지부터 아래로 0-기반 인덱스로 하나씩 삭제하는 방식으로 바꾸고, 전역THotPDF변수가 클릭마다 누수되던 문제도 수정했음
Version 2.234.1
수정
HPDFJBIG2Enc유닛 컴파일 오류(E2003 Undeclared identifier: 'Invariant') 수정: 구버전 Delphi의 RTL에는TFormatSettings.Invariant가 없으므로atof는 이제HPDFXFA.XFAInvariantFormatSettings와 일치하는 수동 구성TFormatSettings를 사용하도록 변경하여 RAD Studio 12.0 Win64 빌드를 복구했습니다.
Version 2.234.0
추가
- JBIG2 이미지 디코딩용 고성능 디코딩 백엔드 추가: 로드 측 이미지 추출(
ExtractLoadedImage등)은 기본적으로 이 백엔드를 활성화하여 PDF에 포함된 JBIG2 이미지를 디코딩합니다. THotPDF.UseExternalJBIG2Decoder속성 추가(기본값True):False로 설정하면 기본 Pascal 디코더로 다시 전환할 수 있습니다.
Version 2.233.0
추가
- JBIG2 이미지 인코딩용 고성능 인코딩 백엔드 추가:
AddImage로icJBIG2압축 흑백 비트맵을 처리할 때 기본적으로 이 백엔드가 활성화되어 더 빠르고 표준을 준수하는 산술 인코딩 JBIG2 스트림을 생성합니다. THPDFJBIG2Options.UseExternalEncoder옵션 추가(기본값True):False로 설정하면 기본 Pascal MMR 인코더로 다시 전환할 수 있습니다.
Version 2.232.1
수정
- 고엔트로피 이미지에서 JBIG2 산술 일반 영역 인코더(
HPDFJBIG2Codec)의 자리올림 전파 결함 수정: MQ 산술 인코더의 바이트 출력(byte-out 및 0xFF 패딩) 시 자리올림 스필오버 비트 제거가 누락되어 노이즈 및 희소 문서 등 고엔트로피 흑백 비트맵이 잘못 인코딩되는 문제를 수정했습니다(규칙적인 저엔트로피 패턴은 영향을 받지 않음). 또한 인코딩 스트림 종료자를 표준 형식으로 정규화하여 타사 디코더가 완벽하게 파싱할 수 있도록 보장합니다.
Version 2.232.0
추가
- JBIG2 디코딩 백엔드(
HPDFJBIG2Codec)의 산술(MQ) 인코딩 지원 확장: 로드 측 이미지 추출(ExtractLoadedImage)은 이제 산술 인코딩된 JBIG2 이미지(산술 일반 영역(GBTEMPLATE 0-3 + TPGDON), 기호 딕셔너리 및 텍스트 영역)를 디코딩할 수 있습니다. 이전에는 MMR 일반 영역만 지원했습니다.
Version 2.231.3
추가
- jbig2dec 참조 디코더를 위한 PNG 출력 지원 추가:
build-libpng-vc64.bat(MSVC를 사용하여 libpng 1.8의 16개 코어 객체를Win64\libpng-*.obj로 컴파일하고 zlib-ng 헤더를 자동 생성하며pnglibconf.h.prebuilt재사용)를 추가하고, libpng 객체가 감지되면 자동으로jbig2_image_png.c및HAVE_LIBPNG를 활성화하고 libpng + zlib-ng 객체를 링크하도록build-jbig2dec-vc64.bat를 수정했습니다.jbig2dec.exe는 이제-t png출력을 지원하며,annex-h.jbig2에 대해 SHA-1 및 PBM 출력과 동일한 64x56 1-bit grayscale PNG를 생성합니다.
Version 2.231.2
추가
- 벤더(vendored)된 jbig2dec 참조 디코더(
Lib/thirdparty/jbig2dec)용 Windows 빌드 인프라 보완:build-jbig2dec-bcc64x.bat(Embarcadero bcc64x를 사용하여 미래에HPDFJBIG2.pas가{$L}을 통해 사용할 수 있는 Delphi 링커 가능 COFF64 객체 15개 생성) 및build-jbig2dec-vc64.bat(MSVC를 사용하여 독립 실행형jbig2dec.exe명령줄 디코더 생성)를 추가하고,config_types.h.in템플릿과.gitignore를 추가했으며,msvc.mak의 누락된 객체 규칙을 수정했습니다.
수정
- 최신 Windows 툴체인에서 jbig2dec 업스트림 소스의 컴파일 및 이식성 문제 수정: 컴파일할 수 없는 1990년대 GNU getopt(
getopt.c/getopt.h, MSVC는strings.h누락으로 중단되고 bcc64x/C23은 프로토타입 선언 없음을 거부함)를 깔끔하고 현대적인 구현으로 교체했습니다.jbig2dec.c::hash_image의 64비트size_t잘림 현상,jbig2_segment.c::jbig2_find_segment의uint32→int언더플로,sha1.c::SHA1_Update의 64비트 카운트 문제, 그리고jbig2dec.c의fread반환 값 오용,%lu형식 지정자 및 POSIX 사용 중단 경고를 수정했습니다. 핵심 JBIG2 디코딩 알고리즘은 업스트림 그대로 유지됩니다.
Version 2.231.1
추가
- 로드 측 이미지 추출(
ExtractLoadedImage) 다중 필터 체인 지원: 이미지 앞의 ASCIIHexDecode / ASCII85Decode / FlateDecode / LZWDecode / RunLengthDecode 등의 데이터 필터가 순서대로 해제된 후, 최종 이미지 필터(DCTDecode / JPXDecode 또는 래스터)로 전달되어 디코딩됩니다(예:[/ASCII85Decode /FlateDecode]).
Version 2.231.0
추가
- CCITT 팩스 디코딩 백엔드(
HPDFCCITTDecode유닛) 추가: ITU-T T.4(G3) 및 T.6(G4) 1차원/2차원 팩스 디코딩을 구현하여, 로드 측 이미지 추출(ExtractLoadedImage)은 이제/DecodeParms의 K / Columns / Rows / BlackIs1 / EncodedByteAlign 매개변수를 준수하여 CCITTFaxDecode 2색 이미지를 디코딩할 수 있습니다.
Version 2.230.2
추가
- 로드 측 이미지 추출(
ExtractLoadedImage)은 이제 성분당 1/2/4비트의 DeviceGray 및 Indexed 래스터를 지원합니다. 비트 단위 패킹을 해제하고 회색조를 8비트로 비례하여 크기를 조정합니다.
Version 2.230.1
추가
- 로드 측 이미지 추출(
ExtractLoadedImage) DeviceCMYK 이미지 지원: 4채널 CMYK 래스터가 표준 공식에 따라 RGB 비트맵으로 변환됩니다.
Version 2.230.0
추가
- JBIG2 디코딩 백엔드(
HPDFJBIG2Codec유닛) 추가: ITU-T T.6(G4 / MMR) 2차원 디코딩을 구현하여 기존 유휴 상태였던THPDFJBIG2Decoder를 활성화함으로써, 로드 측 이미지 추출(ExtractLoadedImage)은 이제 JBIG2Decode 2색 이미지를 디코딩할 수 있습니다. MMR 인코딩된 일반 영역(/JBIG2Globals공유 전역 세그먼트 포함)을 지원하며 산술 인코딩, 기호 딕셔너리, 텍스트/하프톤 영역은 아직 지원되지 않습니다.
Version 2.229.3
추가
- 로드 측 이미지 추출(
ExtractLoadedImage) 인덱스 색상(Indexed) 이미지 지원: Indexed 색상 공간에 저장된 FlateDecode / LZWDecode 래스터는 팔레트 조회를 통해 트루 컬러 비트맵으로 복원되며, DeviceRGB / DeviceGray / DeviceCMYK 기본 색상과 16진수 또는 리터럴 조회 테이블을 지원합니다.
Version 2.229.2
추가
- 로드 측 이미지 추출(
ExtractLoadedImage) JPXDecode(JPEG 2000) 이미지 지원: JPXDecode로 인코딩된 이미지 XObject는 OpenJPEG 백엔드를 통해 비트맵으로 디코딩되며,GetLoadedImageInfo는 이 이미지에 대해Decodable=True를 보고합니다. 이제 PDF에 내장된 JPEG 2000 이미지를 VCL 비트맵으로 직접 추출할 수 있으며 픽셀 단위로 정확한 무손실 JPEG 2000 왕복을 지원합니다.
Version 2.229.1
추가
- 로드 측 이미지 추출(
ExtractLoadedImage) DCTDecode(JPEG) 이미지 지원: DCTDecode로 인코딩된 이미지 XObject는TJPEGImage를 통해 비트맵으로 디코딩되며,GetLoadedImageInfo는 이 이미지에 대해Decodable=True를 보고합니다.
Version 2.229.0
新增
- 新增加载侧图像提取 API:
GetLoadedImageCount/GetLoadedImageInfo/ExtractLoadedImage,可枚举已加载 PDF 中的图像 XObject 并将其解码回 VCL 位图(TBitmap)。GetLoadedImageInfo通过THPDFLoadedImageInfo返回每张图像的尺寸、位深、颜色空间、过滤器与可解码标志,便于在提取前预检。本版可解码以 FlateDecode / LZWDecode / ASCIIHex / ASCII85 / RunLength 编码的 DeviceRGB 与 DeviceGray 8 位栅格;索引色、CMYK、DCTDecode(JPEG)与 JPXDecode(JPEG 2000)图像将在后续版本接入
Version 2.228.0
新增
- 新增
TJpeg2000Bitmap(TBitmap派生类):可直接读写 JPEG 2000 图像,LoadFromStream将 JP2 / J2K 解码为位图、SaveToStream将位图编码为 JPEG 2000 码流;支持无损(LosslessCompression)与有损质量(CompressionQuality)两种模式、灰度 / RGB / CMYK 通道,并附带低层解码器THPDFJpeg2000Decoder供自定义图像管线直接取用解码后的像素数据
修复
- 恢复 JPEG 2000(JPXDecode,PDF 1.7 ISO 32000-1 7.4.9)图像支持:此前解码后端因库源损坏退化为占位桩,无法解码任何 JP2 / J2K 码流;现重新接入 OpenJPEG 2.5.4 引擎,可将灰度、RGB 与 YCbCr 图像解码为 8 位样本(高位深分量重采样为 8 位、YCbCr 自动转 RGB、子采样分量按最近邻上采样),兼容带 JP2 box 头的文件与裸 J2K 码流
AddImage现可直接传入.jp2/.j2k/.jpt/.jpc文件并按所选压缩方式嵌入 PDF(自动识别格式),无需先行手工转码
Version 2.227.0
变更
- 将 GSUB/GPOS 上下文应用与 Mark 定位函数(37 个纯函数)从
HPDFDoc.pas追加提取到HPDFShaping.pas。这批函数覆盖 GSUB 上下文/链式上下文/反向链式替换、GPOS 上下文/链式上下文/嵌套定位、Mark-to-Base/Mark-to-Mark/Cursive/Mark-to-Ligature 定位、GDEF 类查找、Collect-GID 子集闭包等,全部接收TBytes表切片 + glyph ID 值参数,不触碰实例状态。HPDFDoc.pas本轮减约 11000 行(含被提取函数之间的 forward 声明和注释块),累计六轮拆分减约 21700 行(原文件的 26%)
Version 2.226.0
变更
- 将简单对象解析器(
ParseSimpleDictionary、ParseSimpleArray)从HPDFDoc.pas提取到新单元HPDFParser.pas。这两个 byte 级递归下降解析器从AnsiString内容构建THPDFDictionaryObject/THPDFArrayObject树,不触碰THotPDF实例状态;原方法保留为转发 stub,公开 API 不变。这是巨石拆分第五轮,本轮减约 2060 行,五轮累计减约 10700 行(原文件的 13%)
Version 2.225.0
变更
- 将 OpenType 整形原语(71 个纯函数)从
HPDFDoc.pas提取到新单元HPDFShaping.pas。这批函数覆盖 GSUB 覆盖表/查找/替换、GDEF 类查找、TTF 表读取器、脚本重排与整形(Arabic、Syriac、Indic 语系、Thai/Lao、Hebrew、Javanese 等),全部接收值参数(TBytes表切片、UnicodeStringrun、glyph ID)从不触碰THotPDF或THPDFPage实例。HPDFDoc.pas通过 implementation 段uses HPDFShaping访问,TGPOSValue/TGPOSValueArray类型一并迁移。这是巨石拆分第四轮,本轮减约 3000 行
Version 2.224.0
变更
- 将 Factur-X / ZUGFeRD / XMP 电子发票辅助函数(22 个 standalone 函数)从
HPDFDoc.pas提取到新单元HPDFFacturX.pas。这批函数覆盖 FX/Basic/Minimum/EN16931 合规验证、XMP 元数据生成、嵌入式 XML 解析,全部自包含(仅操作值参数与TBytes,不触碰THotPDF实例状态)。HPDFDoc.pas通过 implementation 段uses HPDFFacturX访问,公开 API 不变。这是HPDFDoc.pas巨石拆分的第三轮,累计三轮减约 5600 行
Version 2.223.0
变更
- 将 Direct File API 的底层 I/O helper(44 个共享函数)从
HPDFDoc.pas提取到新单元HPDFDirectFileIO.pas。这些 byte / xref / object-body / AES-crypt 读取函数被加载器和 Direct File 子系统共用,提取后两个子系统都通过uses HPDFDirectFileIO访问。HPDFDoc.pas因此再减少约 1640 行(累计两轮拆分减约 5200 行)。DA 专用类型(THPDFDirectReadBuffer、THPDFDirectWriteBuffer、THPDFDirectIntArray)和全局缓冲(GHPDFCopyBuffer)一并迁移到新单元
Version 2.222.0
变更
- 将预检(preflight)、合规检查、PDF/VT 验证相关代码从
HPDFDoc.pas提取到新单元HPDFPreflight.pas。原有 25 个公开方法(CreatePreflightReport、ValidatePDFVT、EmbedPreflightReportAsXMP等)签名完全不变,实现改为转发到新单元的自包含 standalone 函数;HPDFDoc.pas因此减少约 3500 行。新增 3 个只读访问器(LoadedObjectCount、GetLoadedObjectByIndex、LoadedRootObjectIndex)让独立单元可枚举已加载文档的对象图
Version 2.221.0
新增
- 全面支持多语言化:将
Readme.html提取至Docs/en-us目录,并新增其他 37 种语言的翻译版本;更新了安装程序脚本(HotPDF-FULL.iss、HotPDF-TRIAL.iss),现在会根据安装时所选的语言,自动提取并放置对应语言版本的Readme.html至安装根目录
Version 2.220.0
新增
- 新增统一运行期日志门面
THPDFLogger与全局实例HPDFLog:把原本散落的编译期调试开关统一为运行期可控的日志门面。提供 Error / Warning / Info / Debug 四级严重度过滤,可同时输出到文件、OutputDebugString(IDE Event Log 可见)和控制台;文件目标带 10 MB 单备份滚动;线程安全(TCriticalSection保护);关闭态热路径仅一次布尔判断即返回,发布版零开销。LoadFromFile、CreatePreflightReport和 xref-stream 解析 fallback 三处诊断点已接入,加载成功 / 失败、preflight 摘要、对象流回退等事件会在启用日志时写入结构化记录。取代改HotPDF.inc重编包的传统做法,用户可在运行期随时开关诊断输出
Version 2.219.0
新增
- 新增
THotPDF.GetGPOSSingleAdjustment(GID, FeatureTag, out XPlacement, YPlacement, XAdvance, YAdvance): Boolean:OpenType GPOS LookupType 1 Single Adjustment 的独立公开查询。按任意 4 字节 feature tag(典型'size'光学尺寸 /'vhal'半高度)收集 GPOS lookup,解包 Extension(Type 9)后对 LookupType 1 子表应用已有的_GPOSApplySingle,返回单字形的 XPlacement / YPlacement / XAdvance / YAdvance 调整(1000-em,含正负号)。至此 GPOS 9 个 LookupType 全部 spec-complete——binary applier 早被 contextual kern 嵌套消费,本版补齐 standalone 查询入口填掉 spec matrix 里最后一条 GPOS gap
Version 2.218.1
新增
- 新增
THPDFPage.GetWideCharAdvances(Text, out TotalWidth, out Advances):一次性返回 Unicode 文本的总宽和每字形自然 advance(含 kerning)。底层用 GDIGetTextExtentExPointW一次调用同时拿总宽 + 累积宽度数组,差分后得到每字形 advance。调用方需预先SetLength(Advances, Length(Text))。可用于自定义排版、表格列宽计算、签名块布局等需要全部字形宽度的一次性场景
变更
- 优化
jtJustify两端对齐性能:v2.218.0 的_HPDFEmitJustifiedWideLine对每行做 N+1 次GetWideTextWidth(总宽 1 次 + 前缀差值 N 次,每次都是完整 GDI 往返)。改为一次GetWideCharAdvances调用,每行 GDI 往返从 N+1 次降到 1 次。典型 A4 整页 justify(45 行 × 80 字符)从约 3645 次 GDI 往返降到 45 次,约 80 倍提升。justify 视觉输出不变(同一度量引擎,含相同 kerning)
Version 2.218.0
新增
- 新增
jtJustify两端对齐模式(THPDFJustificationType枚举第四值):传入WideTextOutBox后,每行(除末行)的自然宽度与框宽之间的差额会分摊到行内的可拉伸间隙,使文本左右两边都对齐到框边。Latin 文本在词间空格分摊;CJK 文本(Han / 假名 / 韩文等无词间空格的脚本)在任意相邻字形间均等分摊(日式排版均等割付)。末行及已达到 / 超过框宽的行保持自然左对齐宽度。底层用 v2.215.0 的ExtTextOutTJ 数组 emit,测量用 v2.216.0 的GetWideTextWidth
Version 2.217.0
新增
- 新增
THPDFPage.WideTextOutBox:Unicode 多行自动换行。镜像TextOutBox的契约(返回放入框内的 WideChar 数),但用GetWideTextWidth测量、按 WideChar 索引切分。换行规则支持两种脚本:CJK(Han / 假名 / 韩文 / CJK 标点 / 全角)在任意两个字形间断行(CJK 无词间空格的标准行为);Latin 及其他脚本在最后一个空格 / Tab 处断词,无空格时硬断。硬换行(CR / LF / CRLF)照原样执行。修复TextOutBox(AnsiString)对中文 / 日文 / 韩文 / 代理对文本逐字节切分导致乱码换行的问题
Version 2.216.0
新增
- 新增
THPDFPage.GetWideTextWidth(Text: WideString): Single:Unicode 文本宽度测量。现有TextWidth(AnsiString)先把 WideString 收窄成 AnsiString 再查 0–255 ABC 宽度表,对 CJK / 代理对 / 多字节文本测出无意义的值;新方法用 GDIGetTextExtentPoint32W(lfHeight = -1000)按当前字体整串测量,返回用户空间点宽(与TextWidth同坐标系,可直接做布局预算)。同_XFAMeasureTextImpl的测量策略 - 新增
THPDFPage.GetWideTextRowCount(BoxWidth: Integer; Text: WideString): Integer:Unicode 行数预测,镜像GetTextRowCount的 AnsiString 契约,基于GetWideTextWidth让 CJK / 代理对文本正确换行计数
Version 2.215.0
新增
- 新增
THPDFPage.ExtTextOut(三个重载:PWORD/WideString/AnsiString):GDIExtTextOut风格的扩展文本输出,接受每字形水平位移数组Dx,emit 单个[<hex> <num> ...] TJ数组,让调用方精确控制每个字形原点——用于表格数字对齐、手动字距、两端对齐、表单值填充和签名块排版。复用现有_GPOSEmitPositionedRunTJ emit 器与_GPOSGlyphAdvance1000hmtx 读取,Dx为 PDF 用户空间点(与TextOut的 X/Y 同坐标系);当Dx值等于字形自然 advance 时 TJ 调整数归零,可在一次调用内混排自然与覆盖字形。仅支持简单 LTR 文本,RTL bidi 重排与 producer-side shaping 被旁路
Version 2.214.0
新增
- 新增
THPDFPage.AttachSignatureFieldAppearance:给已通过AddSignatureField/AddSignedSignatureField/AddPAdESSignatureField创建的签名字段挂上可见外观/AP /NForm XObject,并返回 Form 让调用方在 widget 本地坐标系内绘制签名图片、签名者姓名、日期或原因文字;内置薄边框加浅灰底色作为默认的“在此签名”占位外观 - 新增
HPDFNormalizeRect工具函数(三个重载:TRect/THPDFRectangle/ 四个Extended变参):把矩形角点重排为Left<=Right、Top<=Bottom,让鼠标拖框等无序输入可安全传给绘图 API - 把
THPDFPage.RotateCoordinate从 protected 提到 public:外部调用方现在可直接复用与RectangleRotate相同的旋转约定,计算旋转矩形角点、多边形顶点或文字包围盒
Version 2.213.0
新增
- 新增
THPDFPage几何便利方法套件:Arc角度定义弧、Pie角度定义扇形、Chord弓形、ArcTo中心加半径加扫角弧、Polyline折线、Polygon多边形、PolyBezier三次贝塞尔样条。所有方法都复用已有的MoveTo/LineTo/CurveToC/CurveArc底层路径原语,对齐 GDITCanvas角度与点数组语义,让画弧、扇形、折线和样条曲线不必再手写操作符循环
Version 2.212.0
Added
THPDFPage.SetAnnotationJavaScriptAction추가: 일반 주석은 이제/AA를 통해 마우스 진입, 마우스 이탈, 누름, 놓음, 포커스 획득 및 포커스 잃음 JavaScript action을 설정할 수 있어 주석, 링크 및 양식 외관 보조 프로세스에 상호작용 스크립트를 보완하는 데 유용함
Version 2.211.0
Added
THPDFDocOutlineObject.SetURIAction추가:OutlineRoot.AddChild가 반환하는 개요 노드는 이제 기본 페이지 내/Dest에서/S /URIaction으로 전환할 수 있어, 책갈피 패널에서 외부 도움말, 지원 진입점 또는 관련 리소스 링크를 직접 제공하는 데 편리함
Version 2.210.0
Added
THotPDF.AutoCreateURL추가: 활성화 시 수평 단일 줄THPDFPage.TextOut은http://,https://,mailto:및www.URL 텍스트를 자동으로/S /URI링크 주석으로 기록하여 보고서, 목차 및 연락처 정보 페이지에서 클릭 가능한 링크를 직접 생성할 수 있음
Version 2.209.0
Added
THotPDF.SetOpenNamedDestinationAction및THotPDF.ClearOpenNamedDestinationAction추가: 문서 Catalog/OpenAction은 이제THotPDF.RegisterNamedDestination으로 등록된 명명된 대상으로 이동하도록 설정할 수 있으며, 표지, 목차 또는 생성 순서가 변경될 수 있는 문서가 열릴 때 안정적인 챕터 진입점으로 이동하는 데 유용함
Version 2.208.0
Added
THPDFPage.AddPushButtonWithNextAction추가: 버튼의 기본 동작은 이제/Next를 통해 두 번째 PDF action을 연결할 수 있으며, 이를 통해 한 번의 클릭으로/ResetForm을 실행한 후 필드를 표시하거나 필드를 숨긴 후 명명된 동작을 실행하는 등의 대화형 양식 흐름을 순서대로 실행할 수 있음
Version 2.207.0
Added
THotPDF.RegisterOptionalContentGroup향상:UserToggleAllowed매개변수가 추가되어 기본 표시 상태를 유지하면서 지정된 선택적 콘텐츠 그룹을/OCProperties /D /Locked에 기록할 수 있으며, 지도, 엔지니어링 도면 및 다국어 레이어에서 뷰어 사용자가 전환하지 않아야 하는 콘텐츠에 유용함
Version 2.206.0
Added
THPDFPage.AddNamedDestinationLink추가: 페이지 링크는 이제THotPDF.RegisterNamedDestination으로 등록된 명명된 대상을 직접 참조할 수 있으며, 로컬/S /GoToaction 및 문자열/D대상 이름을 출력하여 목차 페이지, 상호 참조 및 페이지 번호가 변경될 수 있는 문서에서 안정적인 탐색을 유지하는 데 유용함
Version 2.205.0
Added
THotPDF.JBIG2Options및THPDFJBIG2Options추가:AddImage(..., icJBIG2)는 이제 문서 수준의Lossless,LossyLevel및UseSymbolDictionary인코딩 의도를 등록된 JBIG2 encoder backend에 전달함 기본값은 기존의 무손실 MMR 출력 경로를 유지하며, backend가 등록되지 않은 경우 여전히 손실 설정을 거부함
Version 2.204.0
Added
THotPDF.EmfOptions및THPDFEmfOptions추가: EMF/WMF 향상된 가져오기는 이제 문서 구성에 따라 fit 비율, EMF 비트맵 렌더링 배율, WMF 비트맵 렌더링 배율, 컬러 비트맵 압축 방식 및 1-bit 비트맵 압축 방식을 구성할 수 있음 기본값은 기존 출력 동작을 유지하며 호출자는 컬러 EMF 비트맵을icFlate로 전환하거나 기본icJpeg를 유지할 수 있음
Version 2.203.0
Added
TfrxHotPDFExport에ExportMode속성 및TfrxHotPDFExportMode열거형 추가: 기본hemPageMetafile은 기존의 전체 페이지 미리보기 내보내기 동작을 유지하며,hemObjectCanvas는 FastReport가ExportObject순회 중TfrxView객체를 개별적으로 그린 후 HotPDF가 현재 페이지 메타파일을 가져오도록 허용하여 객체 수준의 내보내기 순서 제어가 필요한 FastReport 통합 시나리오에 유용함
Version 2.202.0
Added
- 기본 JBIG2 흑백 이미지 출력 추가:
THPDFImageCompressionType은 이제icJBIG2를 포함하며,AddImage및AddImage(FileName)는 1-bit bitmap을 PDF 1.4+/JBIG2Decode이미지 스트림으로 기록할 수 있음 외부 encoder 백엔드가 등록되지 않은 경우 내장된 무손실 MMR generic region 경로를 사용하며, 등록된 백엔드를 우선시하는 확장 메커니즘을 유지함
Version 2.201.0
Added
- JBIG2 백엔드 브리지 및 기본
TDBGridPDF 내보내기 어댑터 추가: 이제RegisterJBIG2DecoderBackend,RegisterJBIG2EncoderBackend, 기능 탐색 및 encoder / decoder 델리게이트 클래스를 공개하며, 프로덕션 수준의 백엔드가 등록되지 않은 경우 여전히 명확하게False를 반환함DBGridHotPDFExport는 VCLTDBGrid의 표시 열 또는 dataset 표시 필드를 페이징된 표 형식으로 file 또는 stream으로 출력할 수 있으며 내보낸 후 원래 dataset bookmark를 복원함
Version 2.200.4
Fixed
- E-Invoice 데모는 이제 ZUGFeRD 1.0 COMFORT 프로필의 헤더 요약에 ChargeTotalAmount와 AllowanceTotalAmount를 추가합니다. ZUGFeRD 1.0 COMFORT 스키마는 두 금액 요소가 각각 정확히 한 번 나타나야 하며, 누락되면 송장 데이터가 ZUGFeRD/Factur-X 비즈니스 규칙 검증을 통과하지 못했습니다
Version 2.200.3
Added
- E-Invoice 데모에 ZUGFeRD 1.0 COMFORT 및 ZUGFeRD 2.0 BASIC 프로필이 추가되었습니다. 전자는 기존 CrossIndustryDocument 1p0 스키마용 송장 XML을 생성하고, 후자는 CrossIndustryInvoice 100 스키마와 zugferd-invoice.xml을 사용하며, 둘 다 내장 Factur-X/ZUGFeRD 검증을 통과합니다
- E-Invoice 데모에 PDF/A 준수 수준 선택기가 추가되어 생성 시 프로필 기본 수준을 PDF/A-3b 또는 PDF/A-3u로 재정의할 수 있습니다
Version 2.200.2
Fixed
- 프리플라이트(Preflight) 보고서는 이제 로더에서 대체 페이지 수를 수락하는 대신 PDF 헤더가 없는 비 PDF 입력을 로드 가능한 페이지에서 실패한 것으로 표시합니다
Version 2.200.1
Fixed
- ZUGFeRD 및 Factur-X 유효성 검사는 이제 로드된 PDF에서 Flate 압축된 포함 송장 XML 및 XMP 메타데이터를 디코딩하고, 속성 스타일의 PDF/A 식별자를 인식하며,
/AFRelationship /Source를 사용하는 XRECHNUNG 송장 XML 파일을 허용합니다
Version 2.200.0
Added
- 로드된 Factur-X 및 ZUGFeRD 하이브리드 송장은 이제 PDF/A-3 메타데이터, 카탈로그
/AF등록, EmbeddedFiles 이름 트리 등록, XMP 파일명 일관성, 프로필 파일명 규칙,/AFRelationship규칙 및 XML 가이드라인 정렬을 식별하는 구조화된 검증 보고서로 확인할 수 있습니다
Version 2.199.0
Added
- 로드된 PDF/A-3 하이브리드 송장 파일은 이제 로드된 카탈로그, EmbeddedFiles 항목, 임베디드 XML 바이트, 문서 XMP 메타데이터, 감지된 송장 프로필 세부 정보 및 송장 XML 추출을 제공하는 Factur-X 및 ZUGFeRD 리더 API를 통해 검사할 수 있습니다
Version 2.198.1
Added
- 이제 Factur-X PDF/A-3 워크플로에서
FacturXWarnings를 노출하여 송장 호출자가 첨부 파일을 거부하지 않고도 권장되는 PDF, 텍스트, 이미지, CSV, XML, JSON, 스프레드시트 및 ODS 지원 문서 형식 이외의 MIME 형식을 가진 추가 지원 첨부 파일을 감지할 수 있습니다
Version 2.198.0
Added
- PDF/A-3 Factur-X 송장 임베딩은 이제 프랑스의
EXTENDED-CTC-FR및EXTENDED-B2B-FR준수 수준을 허용하며, 하이브리드 송장 메타데이터를 쓰기 전에 Factur-X 1.09 EXTENDED 가이드라인 식별자에 대해 유효성을 검사합니다
Version 2.197.18
Fixed
- PDF/A-3 Factur-X 검증은 이제
COMFORT를 ZUGFeRD 1.0 전용 프로필 이름으로 처리하여 일치하지 않는 하이브리드 송장 메타데이터를 쓰기 전에 현재factur-x.xml컨테이너를 거부합니다
Version 2.197.17
Fixed
- PDF/A-3 ZUGFeRD 2.0 메타데이터는 이제
zf:Version을2p0으로 보존하면서 기존urn:zugferd:pdfa:CrossIndustryDocument:invoice:1p0#PDF/A 확장 네임스페이스를 작성하여 컨테이너가 완료되기 전에 하이브리드 송장 검증 규칙과 일치시킵니다
Version 2.197.16
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
MINIMUMandBASIC WLAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보AFRelationshipData, enforcesAlternativeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보XRECHNUNGAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.15
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Versionvalues1.2,2.0,2.1,2.2,2.3, and3.0API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.14
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
EN16931API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보EN 16931, matching current sample metadata while preserving existingEN 16931calls
Version 2.197.13
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
urn:factur-x.eu:1p0:basicandurn:factur-x.eu:1p0:extendedAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보BASICandEXTENDEDAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.12
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
ZUGFeRD-invoice.xmlfilename,COMFORTprofile,urn:ferd:pdfa:CrossIndustryDocument:invoice:1p0#API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보urn:ferd:CrossIndustryDocument:invoice:1p0API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.11
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
zugferd-invoice.xmlfilename withVersion2p0API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보urn:zugferd.de:2p0API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.10
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
fx:Versionas3.0while keeping ordinary Factur-X metadata at1.0API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.9
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
ConformanceLevelAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.8
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
signature-time-stampAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.7
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
signature-policy-identifierAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.6
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
ReasonAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/ReasonAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보signature-policy-identifierAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.5
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
CountryCodepolicy so current German ZUGFeRD invoices rejectMINIMUMandBASIC WL, enforceAlternativeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보XRECHNUNGAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.4
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
CountryCodepolicy so German ZUGFeRD invoices can enforceAlternativeAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보XRECHNUNGAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.3
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
xrechnung.xmlAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보XRECHNUNG,factur-x.xmlAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.2
추가됨
- PDF/A-3:
THotPDF.AddFacturXAssociatedFileAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보factur-x.xmlorxrechnung.xmlin Catalog/AFand/Names/EmbeddedFilesAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
변경됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
/ModDateand raw MD5/CheckSumAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/ParamsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.1
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
UseXRefStream/UseObjectStreamsAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.197.0
변경됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
/CIDToGIDMapAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보/CIDSetAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.196.8
Fixed
- PDF/A-1 Info dictionary and XMP metadata equivalence 기능이 이제 올바르게 동작하며 이전의 잘못되었거나 비준수인 출력을 방지합니다
Version 2.196.7
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.196.6
Fixed
- PDF/A markup-annotation print flags and appearance streams 기능이 이제 올바르게 동작하며 이전의 잘못되었거나 비준수인 출력을 방지합니다
- PDF/A rejection for non-standard named actions on form push buttons 기능이 이제 올바르게 동작하며 이전의 잘못되었거나 비준수인 출력을 방지합니다
Version 2.196.5
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.196.4
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.196.3
Added
- graceful XFA calculate evaluation for unsupported FormCalc constructs 기능을 사용할 수 있으며, 애플리케이션이 이 기능을 사용하지 않으면 기존 출력은 변경되지 않습니다
Version 2.196.2
Added
- XFA calculate evaluation for
.rawValue,Sum(arr[*].field), and JavaScriptthis.rawValue기능을 사용할 수 있으며, 애플리케이션이 이 기능을 사용하지 않으면 기존 출력은 변경되지 않습니다
Version 2.196.1
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
+ - * /API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.196.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
<calculate>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.195.0
추가됨
- XFA
<exData>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<a href>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - XFA flatten: exData rich text degraded-markup handling — unsupported inline tags (
<b>,<em>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
<exData contentType="text/html">API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.193.0
추가됨
- XFA
<exData>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보<p>API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
text-alignproperty on<p>:centerandrightAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보justifyAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보 - API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
margin-top,margin-bottom,space-before, andspace-afterin the<p>style attribute, giving control over vertical gaps between paragraphs
Version 2.192.0
Added
- XFA
<exData>서식 있는 텍스트 draw를 평면화하면 이제 한 단락에서 나온 여러<span>run이 나란히 배치되며, 이전 단계에서는 첫 번째 span만 렌더링하던 것과 달리 각 run이 굵게, 기울임꼴, 색상, 글꼴 크기를 포함한 자체 인라인 CSS를 유지합니다 - 각 run은 측정된 너비에 따라 배치되므로 서로 다른 스타일의 span이 겹치지 않고 줄을 따라 왼쪽에서 오른쪽으로 흐릅니다
- 텍스트 정렬이 포함된 단락 쌓기와 클릭 가능한 링크는 이후 업데이트에서 이어집니다
Version 2.191.0
Added
- XFA 폼을 평면화하면 이제
<exData>서식 있는 텍스트 값(text/htmldraw)을 건너뛰지 않고 스타일이 적용된 텍스트 run으로 렌더링하며, span의 인라인 CSS가 굵게, 기울임꼴, 색상, 글꼴 크기를 설정합니다 - 이 첫 단계는 하나의 스타일이 적용된 run, 즉 한 단락과 한 span만 포함하며, 여러 span 흐름, 단락 정렬, 클릭 가능한 링크는 이후 업데이트에서 이어집니다
Version 2.190.43
Fixed
- 오브젝트 스트림 복구 폴백은 위치를 PDF 오브젝트 번호가 아니라 스트림 내 멤버 인덱스처럼 처리하여, 폴백이 비어 있는 결과를 반환하지 않고 데이터를 실제로 반환하도록 변경됨
- 이 폴백은 복구된 모든 오브젝트를 페이지로 표시하지 않고 raw 데이터에서 페이지로 선언된 오브젝트만 페이지로 분류하므로, 관련 없는 오브젝트 스트림 멤버가 페이지 수를 증가시키지 않음. 파싱 오류 뒤 간접 오브젝트 목록에 남은 오브젝트는 해제되기 전에 제거됨
Version 2.190.42
Security
- PKCS#12 (.pfx/.p12) 키 파일을 가져올 때 범위를 벗어난 PBKDF2 반복 횟수를 32비트 필드로 잘라내지 않고 거부하도록 변경되어, 조작된 파일에서 수십억 번의 키 파생 라운드를 요구하거나 의도치 않은 값으로 래핑되는 일이 발생하지 않음
Version 2.190.41
Fixed
- 손상된 압축 스트림 복구 시 데이터가 중간에 깨졌을 때 부분 해제 결과를 성공으로 받아들이지 않으며, 잘린 출력은 버리고 다음 디코딩 구성으로 진행하여 호출자가 완전한 데이터 또는 명확한 실패만 받도록 변경됨
Version 2.190.40
Fixed
- 여러 graphics-state(ExtGState) 리소스를 사용하는 페이지 복사에서 모든 리소스를 하나의 이름으로 매핑해 하나만 남기던 문제가 수정되어, 각 복사된 상태가 개별 이름을 사용함
Version 2.190.39
Fixed
- 기존
/Annots가 유효하지 않은 참조이거나 배열이 아닐 때 하이퍼링크를 추가해도 더 이상 크래시가 발생하지 않으며, 이 경우 재사용할 수 없는 값을 캐스팅하지 않고 새 주석 배열을 설치함
Version 2.190.38
Fixed
- 페이지 분할 또는 추출에서
/Width또는/Height가 없는 이미지에 고정된 샘플 크기를 할당하던 동작이 제거되어, 누락된 치수는 원본 값을 유지함 - 페이지 추출 과정의 콘텐츠 스트림 선택에서 오브젝트 번호 192에 고정 가중치가 적용되던 문제가 제거되어, 해당 번호를 사용하는 문서에서도 점수가 왜곡되지 않음
Version 2.190.37
Fixed
- 복사 또는 분할 중 누락된 이미지(XObject) 또는 그래픽 상태(ExtGState) 리소스를 참조하는 페이지 복구에서 오브젝트 번호를 목록 위치가 아닌 오브젝트 번호 자체로 대상 오브젝트를 찾으므로 엉뚱한 오브젝트를 복사하지 않음. 실패한 복사는 nil 역참조를 더 이상 일으키지 않음
Version 2.190.36
Fixed
- 여러 콘텐츠 스트림으로 분할된 페이지를 편집 후 재저장할 때 앞부분 스트림이 두 번 렌더링되던 문제를 제거하고, 병합 결과를 하나의 스트림에 저장한 뒤 나머지는 비우며 인접 토큰이 잘못 결합되지 않도록 공백을 삽입함
/XObject리소스는 존재하지만/Font리소스가 없는 페이지에서 이전 페이지 폰트 이름이 남아 있던 것을 해소하고 폰트 이름 목록을 이미지 이름 목록이 아닌 폰트 전용으로 다시 설정함
Version 2.190.35
Fixed
- 손상된 글리프 위치(
loca) 테이블로 임베디드 TrueType 서브셋을 생성할 때 반대로 정렬된 오프셋 쌍이 거대한 복사 길이로 이어지던 언더플로우가 제거되고, 수평 메트릭(hmtx) 테이블은 복사 전 경계를 검증함
Version 2.190.34
Fixed
- 페이지 라벨과 네임드 목적지 같은 메타데이터를 기존 항목이 있는 문서에 복사할 때 이전 값이 누락되거나 누수되지 않도록 사전의 교체 경로로 교체되며, 분리 해제 후 방치되던 동작이 제거됨
Version 2.190.33
Fixed
- 오브젝트 스트림에서 재구성한 일부 PDF 1.6 페이지를 로드할 때 두 페이지 오브젝트 간 딕셔너리 값이 공유되어 문서 해제 시 같은 오브젝트가 두 번 해제되던 문제가 제거되고 값이 깊은 복사로 유지됨
Version 2.190.32
Fixed
- 페이지 콘텐츠를 스캔해 단순 텍스트를 찾을 때 trim 후 빈 줄이 되거나 닫는 괄호가 없는 줄에서 범위 오류가 발생하지 않으며, 빈 케이스를 처리하고 스캔 범위를 문자열 길이로 제한함
Version 2.190.31
Fixed
- 문자점 U+FFFF가 포함된 텍스트 렌더링 시 폰트 내부 글리프 테이블 끝을 넘어서 쓰지 않도록 처리하며, 필요한 경우 항목 저장 전 테이블을 확장
Version 2.190.30
Fixed
BeginParagraph가 인덱스 0을 허용하지 않고 이미 진행 중인 단락을 해제하여 반복 호출 시 누수를 방지EndParagraph는 현재 단락 해제 후 참조를 지우므로 두 번 호출해도 같은 오브젝트를 다시 해제하지 않음
Version 2.190.29
Security
- 시스템 난수 소스가 잠시 사용 불가해도 AES 초기화 벡터와 키를 예측 가능한 비암호학적 폴백에서 만들지 않으며, 약한 추측 가능한 IV/키 생성을 거부하고 암호화를 실패 처리함
Fixed
- 빈 문자열 MD5 해시 계산에서 잘못된 포인터 역참조가 발생하지 않음
Version 2.190.28
수정됨
- Rendering EMF metafiles that contain
PolyDrawAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.190.27
Fixed
Columns또는Colors가 0인 TIFF Predictor 2를 선언한LZWDecode스트림 디코딩 시 0으로 나누기 오류가 발생하지 않으며, 해당 값에서 predictor 단계가 건너뜀- 단일 인자 LZW 디코더가 디코드 파라미터를 완전히 초기화하여 초기화되지 않은 스택 값 의존성을 제거함
Version 2.190.26
Fixed
- Code 93 체크 문자 계산이 잘못된 가중치 카운터를 재설정하지 않으므로 14자보다 긴 데이터에서 올바른 체크 심볼이 생성됨
- Code 128 set B가 소문자
i를 공백이 아닌 문자로 정확히 인코딩하며, 잘못된 심볼과 체크섬 손상을 방지 - MSI 바코드 체크디지트 계산이 각 숫자의 값이 아니라 문자 코드를 사용하던 동작에서 숫자 값 기반으로 동작하도록 변경되어 표준 MSI 리더와 일치
- 큰 모듈 폭으로 그린 바코드가 내부 카운터 오버플로우를 일으키지 않으며 음수/섞임 폭이 발생하지 않음
- 검증에 실패한 바코드 데이터를 그리면 저장된 폰트, 펜, 브러시 오브젝트가 누수되지 않음
- 독립형
DrawText루틴은 실제 저장한 canvas 폰트를 복원하고, 호출자의 폰트를 빈 기본값으로 리셋하지 않음
Version 2.190.25
Fixed
- 끝 데이터 마커가 없는
ASCIIHexDecode,ASCII85Decode,RunLengthDecode스트림을 자르거나 잘못된 스트림을 복호화할 때 메모리를 무한히 소모하던 루프가 제거되어 입력이 끝나면 stale 바이트를 다시 처리하지 않고 중단 ASCIIHexDecode필터가 다시 유효하지 않은 16진 문자를 거부하며, 연산자 우선순위 오류로 범위 밖 바이트가 검증을 통과했던 경로가 제거됨
Version 2.190.24
Fixed
- 문서 복구 중 중첩 사전이 재구성되는 오브젝트의 복사/병합이 사전을 손상시키거나 메모리 누수를 만들지 않으며, 오브젝트 인스턴스를 내부 항목 레코드를 보존하는 슬롯에 보관하고 버려진 항목을 해제 없이 버리지 않음
Version 2.190.23
Fixed
- 문자맵 압축 결과가 없는 Type 0 (CID) 폰트의
/ToUnicode맵이 유지되며, 이전에 맵 등록이 건너뛰어 해당 폰트 텍스트를 복사/추출하지 못하고 스트림이 두 번 해제되던 문제가 해결되고, 맵은 항상 저장되며 필요 시 비압축 저장, 각 스트림은 한 번만 해제
Version 2.190.22
Fixed
- 세대 번호가 10 이상인 오브젝트를 참조하는 크로스 리퍼런스 테이블 로딩에서 중복 탐지 테이블 범위를 벗어나 쓰지 않으며, 해당 항목은 중복 제거 없이 허용되고 객체 번호가 0으로 읽히는 손상 항목은 테이블 시작 전에 인덱싱하지 않도록 건너뜀
Version 2.190.21
Fixed
SetFont에 32자 이상의 폰트 이름을 전달해도 내부 폰트 구조체의 고정 크기 face-name 영역이 넘쳐나지 않도록 설치된 폰트 탐색에서 사용하는 길이 제한 루틴으로 안전하게 잘라 저장
Version 2.190.20
Fixed
- CCITT Group 3/4 압축 비단색 이미지 또는 1비트 마스크 이미지를 추가할 때 힙 손상이 발생하던 문제가 수정되어 이미지 빌더 실패 경로에서 스트림을 해제한 뒤 에러를 은폐하지 않고, 소멸 시 같은 스트림을 두 번 해제하지 않음. 대신 오류를 전파해 이미지 오브젝트 빌드가 실패 상태로 종료
- 8비트 인덱스 이미지의 팔레트 조회 테이블 생성 시 조회 버퍼가 수용할 수 있는 항목 수보다 1개 더 요청되지 않도록 하여 전체 256개 팔레트를 가진 소스 비트맵에서 경계 오버런을 방지
Version 2.190.19
Security
z모든 0 축약 표기법을 사용하는ASCII85Decode스트림 복호화 시 디코드 버퍼를 넘어 쓰지 않도록 최대 확장 크기에 맞게 출력 버퍼를 할당해 조작된 PDF 스트림에서의 힙 오버플로우를 차단
Version 2.190.18
Security
- 디지털 서명 중 잘못된 PKCS#12 (.pfx/.p12) 자격 증명/인증서를 로드할 때, 경계 검사를 통과한 초과 길이 ASN.1 길이 필드로 인해 버퍼 끝을 넘어 읽는 문제가 제거되어 신뢰할 수 없는 서명 재료로 OOB read가 발생하지 않음
Version 2.190.17
Added
- 표준 문서 로더가 하이브리드 참조 PDF를 읽을 수 있게 되었으며, 크로스레퍼런스 테이블의 trailer가
/XRefStm측면 섹션을 가진 파일도LoadFromFile이 압축 오브젝트 스트림 전체를 로드함 - 압축 필터가 없는 cross-reference 스트림과 오브젝트 스트림도 올바르게 로드됨. ISO 32000-1은
/Filter키가 없음을 허용
Fixed
- 하이브리드 참조 문서를 AES-256으로 다시 저장할 때 (
ActivateProtection+SaveLoadedDocument또는EncryptFile) 더 이상 list-index 오류가 나지 않으며 암호화 출력은 소스 파일의 모든 오브젝트를 유지
Version 2.190.16
Changed
- Direct File API 재작성 시 객체 헤더와
stream키워드를 각 객체 앞부분에서 재스캔하거나 재시도 시 복제하지 않게 되어 2 GB 벤치마크 문서(1,670,000개 객체)에서 AES-256 암호화가 약 2.3배 빨라졌고(49초 → 14초), 복호화가 약 2.7배 빨라졌으며(43초 → 16초), 전체 직접 재작성은 약 10초에서 6초로 단축되었다
Version 2.190.15
Fixed
LoadFromFile및LoadFromStream은%PDF헤더 앞에 바이트가 추가로 있는 경우에도 파싱 시작 전에 중단하지 않는다. 이제 HTTP 또는 Signed HTTP Exchange(SXG) 래퍼, 메일 캡처, 유사 컨테이너 안의 파일이 버전 번호 변환 오류로 실패하지 않고 문서 복구 폴백 경로로 진행된다- 크로스 레퍼런스 데이터가 사용 불가한 문서의 복구 로딩은 파일 전체에서 페이지 객체 수를 세지 않고 라이브 페이지 트리에서 페이지 수를 가져온다. 덕분에 증분 갱신으로 삭제된 페이지가 다시 복원되지 않으며 보고된 페이지 수가 다른 리더와 일치한다
- 손상된 문서를 스캔 복구할 때, 동일 객체 번호의 나중에 기록된 리비전이 먼저 기록된 리비전보다 우선한다, 이는 증분 갱신 동작을 정확히 따른다
Version 2.190.14
Added
- Direct File API가 공통 오피스 내보내기 도구가 생성한
/XRefStm사이드 섹션을 갖는 하이브리드 참조 PDF를 읽을 수 있게 되어, 직접 열기·복사·재작성·AES-256 암호화 시 객체 스트림의 압축 객체가 누락되지 않는다
Fixed
- 전통 크로스 레퍼런스 테이블을 가진 증분 갱신 PDF에서 더 최신 리비전에서 해제된 객체가 오래된 리비전에서 직접 재작성될 때 복원되지 않는다
- 해제된 크로스 레퍼런스 항목이 잘못된 객체 경계를 만들지 않아 객체 번호가 재사용되는 문서에서 파일 앞부분 인접 객체가 잘리는 문제가 사라졌다
Version 2.190.13
Changed
- 문서 카탈로그가 압축 객체 스트림 안에 있는 PDF는
DAOpenFileReadOnly또는DACopyFile로 열 때 페이지 수를 얻기 위해 전체 문서를 로드하는 폴백을 하지 않는다. 1.25 GB 벤치마크에서 직접 열기 시간이 약 0.9초에서 몇 밀리초로, 가벼운 복사 시간이 대략 절반으로 단축되었다
Fixed
- Direct File API가 크로스 레퍼런스 스트림의
/Prev체인을 추적하여, 증분 갱신된 PDF의 최종 리비전만이 아니라 모든 객체를 직접 열기·복사·재작성·AES-256 암호화에 노출한다 - 증분 갱신 PDF에서 더 최신 리비전에서 해제된 객체가 오래된 크로스 레퍼런스 섹션에서 직접 재작성 시 복원되지 않는다
Version 2.190.12
Changed
- Direct File API 재작성 경로(
EncryptFile,DecryptFile,DASaveAsFile)가 변경 후 소스를 슬라이딩 윈도우로 읽고 출력 쓰기를 집계하므로, 수백만 객체의 매우 큰 PDF 처리 속도가 크게 향상되었다. 2 GB 문서에서 AES-256 암호화가 약 153초에서 49초로, 복호화가 121초에서 43초로, 전체 직접 재작성은 48초에서 10초로 단축 - 메모리에 이미 보유한 객체 본문은 직접 재작성으로 출력 파일에 복사하는 동안 두 번째 디스크 읽기를 하지 않는다
- 직접 AES-256 재작성 중 간접
/Length참조 해석이 조회마다 소스 파일을 다시 열지 않는다
Version 2.190.11
Added
- 폼 평탄화 처리 지원이 개선되어
FlattenFormFields가 평탄화한 AcroForm 필드 수를 반환하고, 새로 추가된HasFormFields와FormFieldExists로 애플리케이션이 로드된 PDF나 작성 중인 폼에서 대화형 필드를 제거하기 전에 확인할 수 있다 - Preflight CLI 데모에 CSV 출력, 프로파일·프리셋 검증, 정확한 단일 파일 출력 경로, PDF/VT 검증 보고서, 집계 요약, 대시보드 링크가 추가되었고, Preflight Report GUI 데모는 생성 전 프로파일 검증을 수행하고 프로파일 필터 CSV 출력을 CSV 형식으로 유지한다
Version 2.190.10
Fixed
- MovePage 후 문서가 다시 활성 현재 페이지를 갖게 되어 DeletePage와 동일하게 동작한다. 이동 직후 페이지를 먼저 선택하지 않아도 그릴 수 있고, 이동 직후 바로 문서를 닫아도 모든 글꼴이 일반 경로를 통해 기록된다
Version 2.190.9
Fixed
- MovePage 직후 완료된 문서에서 글꼴이 사라지던 문제를 해결. 이미 렌더된 페이지에서 지연된 공유 글꼴 데이터가 닫기 시 항상 출력되어 모든 페이지 텍스트가 올바른 글꼴 리소스로 렌더링된다
- 이전 페이지로 돌아가 추가 글꼴을 선택해도 해당 페이지에서 이미 사용 중인 글꼴이 덮어쓰기되지 않으며, 공유 글꼴 레지스트리에 보류된 이름이 예약되어 각 글꼴이 고유 이름을 유지한다
- 내장 글꼴 압축 실패 시 글꼴 프로그램은 압축 없이 저장되고 글꼴 객체가 정상 종료되어 일부 뷰어에서 렌더링되지 않던 불완전 엔트리가 사라진다
SimpleLatinFonts사용 시 Symbol 또는 ZapfDingbats의 의미 기반 글리프가 변경되지 않고 유지되며, 상징 글리프는 텍스트 바로가기 단축 경로에서 제외된다(ISO 32000-1 §9.6.6.2)- 폰트 하위셋팅이 켜진 상태에서 오버플로우 검사 포함 컴파일에서 PDF 생성 시 정수 오버플로 오류가 더 이상 발생하지 않으며, 여러 문서에서 같은 컴포넌트 인스턴스를 재사용해도 중간에 문서를 재구성하는 드문 흐름에서 메모리 누수가 없어졌다
Version 2.190.8
Fixed
- 폰트가 하나의 OpenType 조회에 여러 대체 컨텍스트 규칙을 갖는 경우 문맥 카닝이 중복 적용되지 않는다. 규칙 서브테이블은 순서대로 시도되어 첫 번째 일치가 선택된다
- 중첩된 컨텍스트 매치가 조정값을 누적하지 않으며, 컨텍스트 위치 지정이 적용된 뒤에는 매치된 글리프 범위를 건너뛰고 다음 매칭을 진행해 반복 패턴이 정확히 한 번씩 보정되도록 한다
- 잘린 또는 손상된 폰트에서 OpenType 위치 지정/교체 엔진의 중첩 조회 분기를 강화해 각 테이블 레코드를 읽기 전에 전체 범위를 검증한다
Version 2.190.7
Fixed
- OpenType 기능이 연쇄 치환으로 문자를 바꾸는 경우(작은 대문자의 대체형, 계열 숫자 등), 복사/붙여넣기와 텍스트 추출에서 원래 문자로 복구한다. ToUnicode CMap은 최종 글리프를 내부 개인영역 코드포인트가 아닌 원본 텍스트로 되돌린다(ISO 32000-1 §9.10.3)
- 분수 기능(
frac)은 내부 대체 코드포인트 예산이 시퀀스 중간에 소진되면 분수 글리프와 일반 글리프의 반만 변환한 혼합 출력을 내지 않으며, 해당 텍스트 실행은 원래 글리프 배열을 그대로 사용해 폴백한다
Changed
- OpenType 기능의 조회 적용 순서는 폰트 기능 테이블의 나열 순서와 무관하게 LookupList 인덱스 순으로 적용되도록 변경된다
Version 2.190.6
Fixed
- 하나의 합자에서 두 개 이상의 악센트가 있으면 RTL 텍스트에서 두 번째 이후의 마크가 해당 합자 구성요소(GPOS mark-to-ligature)로 붙어 기준선으로 내려가지 않는다
- shadda 뒤에 모음 부호 같은 동일 구성요소를 공유하는 누적 악센트는 같은 앵커에서 겹치지 않고 계단식으로 쌓인다
- 합자 구성요소 수가 폰트의 GPOS 연결 데이터를 따라가므로 길게 매핑되는 기존 합자 문자에서 후행 악센트가 범위를 벗어나는 현상이 사라진다
- 단일 보조 평면 문자가 마크 배치에서 합자로 오인 해석되지 않는다
- 폰트가 실제 합자 구성요소로 판별한 악센트는 합자 옆에 두 번 그려지지 않는다
- 합자 구성요소 메타데이터가 서로 다른 텍스트 출력 호출 사이에서 누수되지 않는다
Version 2.190.5
Added
- 새
AutoShapeHanifiRohingya속성으로 Hanifi Rohingya 텍스트에 오른쪽에서 왼쪽으로 연속 커서가 적용되어, 기본/중간/종단/독립형 글리프를 선택하고 스크립트의 연결 동작을 정확히 반영한다 - 새
sfTaiVietReorder플래그로 Tai Viet 텍스트의 시각적 재정렬을 지원하며, 입력 순서가 아닌 모음 위치를 바르게 앞쪽으로 재배치한다 - 새
sfMeeteiMayekShaping플래그로 Meetei Mayek 텍스트의 음절 재정렬을 지원하여 왼쪽 모음 기호가 대응 자음 앞쪽으로 이동해 올바른 표시가 된다 - 세 스크립트 모두 기존 opt-in 모델을 따르므로, 새 속성이나 플래그를 비활성화한 문서는 바이트 단위로 동일한 출력
Version 2.190.4
Fixed
- 문자 글리프 인덱스가 RTL 감지에서 히브리어/아랍어 코드포인트를 위해 예약된 수치 구간에 우연히 들어가도 LTR 텍스트가 뒤집히지 않으며, RTL 감지기는 글리프 인덱스 페이로드를 완전히 건너뛴다
- 큰 폰트에서 드물게 사용되는 라틴, 그리스, 키릴 문자를 섞어 렌더링하면 모든 경우 원래 순서를 유지한다
Version 2.190.3
Fixed
- 단독 하이서로게이트 뒤 특정 BMP 문자가 오면 RTL 감지에서 보조 평면 코드포인트가 잘못 생성되지 않는다. 잘못된 UTF-16 입력은 Adlam 또는 Hanifi Rohingya로 묶여 뒤집히지 않고 논리 순서를 유지한다
- Adlam와 Hanifi Rohingya의 정합한 서러게이트 쌍은 영향이 없으며 오른쪽에서 왼쪽 방향으로 계속 shaping 된다
Version 2.190.2
Fixed
- 스크립트별 shaping 플래그가 분리되어,
sfMeeteiMayekShaping만 켜도 데바나가리, 벵골어, 타밀어, 크메르어, 미얀마어, 다른 인도 문자들이 재정렬되지 않고,sfIndicShaping또는sfIndicGSUB만 켜도 Meetei Mayek는 영향 받지 않는다 - 비활성 플래그 스크립트는 바이트 단위 출력이 동일해 혼합 스크립트 문서의 opt-in 동작이 복구된다
Added
ApplyIndicReorder에 플래그 범위 재정렬 쿼리를 위한 명시적 기능 집합 오버로드가 추가되어, 기존 매개변수 없는 형태는 전체 스크립트 커버리지를 유지한다
Version 2.190.1
Fixed
- Unicode Character Database 기준으로 Meetei Mayek 문자 분류가 완료되어 PHAM, ATIYA, BHAM (U+ABD0–U+ABDA) 문자가 음절 시작으로 인식되고,
sfMeeteiMayekShaping활성 시 왼쪽 모음 기호와 이어지는 겹침 마크 정렬이 바르게 동작한다 - 빈번한 모음 캐리어 문자 ATIYA 기반 단어는 이전에는 논리 순서로만 모음 기호가 유지되었으나 이제 다른 Meetei Mayek 블록과 같은 시각 순서로 정렬한다
Version 2.190.0
Fixed
- 결합 문자(액센트, 아랍 하라카트, 히브리 니크두드, 타이 및 라오어 모음 기호)가 각자의 위치에 제대로 렌더되어 줄 시작 쪽으로 밀려가는 문제가 사라졌다
- 결합 마크가 누적되어 위쪽 마크에 대한 기본 앵커가 있는 폰트에서도 아래쪽 마크 위에 쌓인다
- 연결 오프셋과 mark-to-ligature 연결은 PDF text-object 규격(ISO 32000-1)에 따라 데코레이션 텍스트 뒤의 위치 이탈을 제거한다
- 위치 지정된 마크 또는 커서 처리 뒤 텍스트가 올바른 펜 위치에서 계속된다
Changed
- 커닝, 마크 위치, 커서 연결은 같은 텍스트 실행 내에서 함께 계산되어 서로 배제되지 않는다
Version 2.189.1
Fixed
- 오른쪽에서 왼쪽 텍스트가 GPOS 쌍 커닝의 진행값을 줄 폭에 적용하여, 커닝된 RTL 텍스트 뒤 텍스트의 위치가 정확해진다
- 세로 상승값이 있는 커닝된 RTL 실행은 최종 글리프에도 동일한 진행 보정을 적용한다
Version 2.189.0
Added
- 문맥 기반 GPOS 배치 포맷, 거리 기반 배치, 크메르어·버마어 재정렬 통합, 세로 글꼴의 세로 대체형, case form, 숫자 너비, 과학 하위, 분자·분모, 취소선 영(0) 등 OpenType 옵트인 옵션을 확장
Changed
- AES-256 암호화/복호화가 대용량 PDF에 대해 직접 파일 재작성 경로를 사용해, 여러 GB 파일을 포함한 지원 입력에서 전체 문서 메모리 로드를 피한다
- Win32 AES-256-CBC가 Win64와 동일한 CPUID 조건부 AES-NI 백엔드를 사용하고, AES-NI가 없는 프로세서는 순수 C 폴백으로 자동 전환한다
Version 2.188.2
Added
- 등록된 폰트가 적절한 stylistic alternates를 노출할 때
sfStylisticAlternates가 Unicode 텍스트 출력에서 OpenTypesalt치환을 자동 적용
Fixed
- GPOS 쌍 및 마크 위치 조회는 손상되거나 악성 폰트 데이터에서 32비트 산술 오버플로를 유발할 수 있는 비정상 클래스/앵커 오프셋을 거부한다
- GPOS 마크 위치 조회는 LookupFlag 마크 필터를 존중해, 무시되는 마크와 첨부 유형, 필터 집합이 잘못 적용되지 않는다
- Adlam 위치 지정 shaping은 Syriac, N'Ko, 몽골어 경로와 동일한 유니코드 맵 가용성 가드를 사용한다
Version 2.188.1
Fixed
- RTL 아랍어·히브리어 출력에서 마크 위치가 켜진 상태라도 GPOS 쌍 커닝이 유지되어, 하라카트와 니꾸드가 기본 글리프 간격 보정을 잃지 않고 앵커된다
Version 2.188.0
Added
- 새
sfFractionsshaping 옵션이 Unicode 텍스트 출력에서 OpenTypefrac치환을 자동 적용하며 분자, 분수 슬래시, 연쇄 문맥 분모를 ToUnicode 매핑으로 원본 텍스트에 연결
Version 2.187.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
sfSmallCapsforsmcp,sfCapsToSmallCapsforc2sc,sfOldstyleFiguresforonum,sfLiningFiguresforlnum,sfSuperscriptsforsups,sfSubscriptsforsubs, andsfOrdinalsforordn
Version 2.186.0
Added
- 새
sfDiscretionaryLigatures,sfHistoricalLigatures옵션이 Unicode 텍스트 출력에서 OpenTypedlig,hlig조회를 자동 적용하고 ToUnicode 매핑을 유지하며 기본값은 비활성
Version 2.185.1
Fixed
- U+0870-U+089F 아랍 확장 B 문자가 아랍 자동 shaping이 켜질 때 제작자 측 아랍 연결과 네이티브 GSUB 위치 shaping에 참여해 대응 OpenType Arabic 기능이 있는 폰트는 연결 형태를 ToUnicode 매핑으로 출력한다
Version 2.185.0
Added
- 옵트인 아랍 텍스트 출력용 네이티브 Arabic GSUB shaping 추가:
sfArabicGSUB켜면 HotPDF가 등록 폰트의init,medi,fina,isol,rlig,calt,rclt조회를 논리형 아랍 런에 적용하고 결과 글리프 ID를 ToUnicode로 출력 - 새
sfCursiveAttachment옵션은 Unicode 텍스트 출력에서 OpenType GPOS cursive entry/exit 앵커를 적용해 네이티브 GSUB 경로로 모양이 조정된 연결 글리프를 폰트의 고유curs데이터에 맞춘다
Version 2.184.2
Fixed
- RTL Adlam fallback 텍스트는 폰트가 Adlam 위치 치환을 적용하지 못해도 UTF-16 서러게이트 쌍 순서를 유지하고, N'Ko U+07FA는 인접한 N'Ko 문자를 연결하기 위한 연결 문자로만 동작하며 위치형으로 치환되지 않는다
Version 2.184.1
Fixed
- mark-to-ligature 위치 지정을 RTL 아랍 합자에도 적용한다. Allah 합자 같은 글리프의 하라카트가 올바른 합자 구성요소에 붙고, 기존 좌측우선 배치에서만 동작하던 per-component 처리로 인한 오류가 제거되며 기존 합자(Allah, lam-alef)는 구성요소 추적으로 인식, 옵션 기본값은 off
Version 2.184.0
Added
- 텍스트 shaping 파이프라인에서 클러스터와 구성요소 추적을 제공. 합자가 형성될 때 출력 글리프가 어떤 원문자를 덮고 몇 개의 구성요소를 갖는지 기록해 정확한 mark 배치와 텍스트 추출을 지원
- 새 mark-to-ligature shaping 옵션이 활성화되면 LTR 합자 텍스트에서 OpenType GPOS mark-to-ligature가 합자 구성요소에 정확히 연결되고, 옵션 비활성 시 출력은 변경되지 않는다
- 이 경로로 생성된 다중 구성요소 합자는 정확한 텍스트 추출 매핑을 보유해 복사/붙여넣기 시 원본 문자 시퀀스를 복원한다
Version 2.183.0
Added
- Javanese 문자에서 모음 위치를 올바르게 배치하는 전처리를 추가했습니다. Javanese 재정렬 옵션을 켜면 taling 및 dirga mure 같은 전치 모음 기호가 pangkon으로 결합된 스택을 포함한 자음 클러스터 앞쪽으로 렌더링 전에 이동되어 올바른 시각 순서로 배치됩니다. 옵션이 꺼져 있으면 출력은 바뀌지 않습니다
Version 2.182.0
Added
- Hebrew 텍스트에서 모음점 위치를 올바르게 배치하는 전처리를 추가했습니다. Hebrew 재정렬 옵션을 켜면 모음점, dagesh, shin/sin 점, cantillation 표시가 렌더링 전에 표준 순서로 정렬되어 원본 순서가 달라도 마크 배치가 올바르게 동작합니다. 옵션이 꺼져 있으면 출력은 바뀌지 않습니다
Version 2.181.0
Added
- Thai 및 Lao 텍스트에서 마크 위치를 올바르게 배치하는 전처리를 추가했습니다. Thai/Lao 재정렬 옵션을 켜면 SARA AM이 위쪽 부분과 뒤쪽 부분으로 분해되고 모음 또는 성조 마크가 렌더링 전에 표준 순서로 정렬되어 성조와 모음을 정확히 맞출 수 있습니다. 옵션이 꺼져 있으면 출력은 바뀌지 않습니다
Version 2.180.0
Added
- Adlam 텍스트용 생산자 측 자동 셰이핑을 추가했습니다. 서아프리카 Fula 문자 U+1E900-U+1E95F에서 AutoShapeAdlam을 켜면 OpenType 위치 치환을 통해 올바른 필기체 결합형으로 렌더링되고, surrogate pair가 올바르게 처리되며, 복사/붙여넣기는 원래 문자를 복구합니다. 옵션이 꺼져 있으면 출력은 바뀌지 않습니다
Version 2.179.0
Added
- N'Ko 텍스트 U+07C0-U+07FF용 생산자 측 자동 셰이핑을 추가했습니다. AutoShapeNko를 켜면 OpenType 위치 치환을 통해 올바른 필기체 결합형으로 렌더링되고, 복사/붙여넣기는 원래 문자를 복구합니다. 옵션이 꺼져 있으면 출력은 바뀌지 않습니다
Version 2.178.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.177.0
Added
- OpenType GPOS 세로 커닝
vkrn및 세로 비례 대체vpal읽기를 지원하여, 세로 텍스트 출력에서 사용할 수 있도록 글꼴이 쌓인 글리프 사이에 정의한 세로 advance 조정을 노출합니다
Version 2.176.0
Fixed
- 커닝이 이제 GPOS 글리프 배치 오프셋을 적용합니다. 이전에는 읽고 버렸던 수평 XPlacement와 수직 YPlacement도 반영되며, kern 기능으로 글리프 위치를 미세 조정하는 글꼴은 LTR 및 RTL 텍스트 모두에서 advance 조정과 함께 해당 오프셋을 렌더링합니다
Version 2.175.0
Fixed
- RTL 텍스트의 겹친 결합 마크가 이제 올바르게 배치됩니다. shadda와 모음이 있는 Arabic 문자 또는 쌓인 Hebrew 점처럼, 추가 마크가 기본 문자로 무너지지 않고 아래쪽 마크 위에 쌓입니다
Version 2.174.0
Added
- OpenType GPOS Mark-to-Ligature attachment LookupType 5를 지원하여, 결합 마크가 합자 글리프의 특정 구성 요소에 배치되는 위치를 보고하고 각 마크가 여러 글자 합자의 해당 부분에 고정되도록 합니다
Version 2.173.0
Added
- OpenType GPOS cursive attachment LookupType 3 읽기를 지원하여, Arabic Nastaliq 같은 필기체 스크립트가 연결된 글자를 흐르는 기준선에 맞추는 데 쓰는 entry 및 exit 앵커를 노출합니다
Version 2.172.0
Added
- 커닝이 활성화된 경우 Arabic 및 Hebrew 같은 RTL 텍스트에도 이제 커닝이 적용됩니다. 이전 RTL 표시 경로는 결합 마크만 배치하고 커닝은 적용하지 않았습니다
- LookupType 7 Context 및 LookupType 8 Chained Context를 통한 OpenType GPOS 문맥 커닝이 이제 LTR 및 RTL 텍스트 모두에 출력되어, 문맥 의존 커닝이 단순히 읽히는 데 그치지 않고 실제 출력을 조정합니다
Version 2.171.0
Added
- LookupType 7 Context 및 LookupType 8 Chained Context positioning을 통한 OpenType GPOS 문맥 커닝을 지원하여, 글꼴의 문맥 의존 커닝을 읽고 텍스트 배치에 사용할 수 있습니다
Version 2.170.0
Added
- OpenType
loclLocalized Forms 기능의 선택적 자동 적용을 추가했습니다. 셰이핑 언어가 설정되면 Serbian 및 Bulgarian Cyrillic 형태나 Turkish dotless i 같은 언어별 글자 모양을 선택합니다
Version 2.169.0
Added
- 활성 script의 텍스트에 OpenType
caltContextual Alternates 기능을 선택적으로 자동 적용합니다. 인코딩되지 않은 문맥 글리프는 ToUnicode 매핑과 함께 포함되어 복사/붙여넣기가 원본 텍스트를 복구합니다
Version 2.168.0
Added
- 셰이핑된 Arabic 텍스트에 OpenType
rcltRequired Contextual Alternates 기능을 선택적으로 자동 적용합니다. contextual-alternates 옵션을 통해 문맥 글자 선택에 후속 셰이퍼가 필요하지 않습니다
Version 2.167.0
Added
- OpenType GSUB shaping for Devanagari and Indic scripts 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
- the new Indic GSUB mode remains opt-in and separate from reorder-only shaping 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
- ToUnicode recovery for producer-side complex shaping codepoints 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.166.0
Added
- producer-side Mongolian shaping with OpenType GSUB 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
- ToUnicode extraction for shaped Mongolian letters 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.165.1
Fixed
- right-to-left ordering for shaped Syriac and Arabic Supplement / Extended-A words 문제가 수정되어 이전의 잘못된 출력이나 진단을 피합니다
Version 2.165.0
Added
SimpleLatinFontscompact WinAnsi output for printable ASCII standard-font text 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.164.0
Changed
- document-wide shared font embedding across multiple pages 동작이 생성된 페이지 전체에서 일관되며 렌더링과 텍스트 추출을 유지합니다
Version 2.163.3
변경됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
JEPSCD+ArialMTAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.163.2
변경됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
CompressionAPI 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.163.1
Fixed
- valid TrueType fonts without optional hinting tables 문제가 수정되어 이전의 잘못된 출력이나 진단을 피합니다
Version 2.163.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.162.0
Added
- OpenType
liga/cligLatin ligature folding throughsfStandardLigatures기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다 - copy, paste, and search recovery for folded Latin ligatures 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.161.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.160.0
Added
- OpenType GSUB groundwork for future Tibetan rendering 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.159.0
Added
- GPOS mark positioning for Hebrew niqqud and Arabic harakat in right-to-left runs 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.158.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.157.0
Added
- producer-side shaping for Arabic Supplement and Arabic Extended-A letters 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
- ToUnicode recovery for newly shaped Arabic Supplement and Extended-A letters 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.156.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.155.0
Added
- GPOS Mark-to-Base placement for combining marks in Thai, Lao, Hebrew, and Latin text 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.154.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.153.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.152.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.151.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.150.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
수정됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.149.0
추가됨
- API 동작 및 나열된 기호에 대한 현지화된 변경 세부 정보
Version 2.148.1
Changed
- more verifiable Memory Stream and PDF Info demo output 동작이 생성된 페이지 전체에서 일관되며 렌더링과 텍스트 추출을 유지합니다
Version 2.148.0
Added
- XFA fields below the first page flowing onto following pages 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.147.4
Added
- diagnostics for oversized content-sized XFA text fields and labels 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.147.3
Added
- one-line minimum height for empty growable XFA text 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.147.2
Added
- layout for XFA text without an explicit width 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.147.1
Added
- automatic height for XFA text with width but no height 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.147.0
Added
- internal text measurement groundwork for content-sized XFA text 기능을 사용할 수 있습니다. 관련 옵션을 켜지 않으면 기존 출력은 변경되지 않습니다
Version 2.146.4
Fixed
- positive page-height normalization for loaded PDFs with descending box coordinates 문제가 수정되어 이전의 잘못된 출력이나 진단을 피합니다
- unchanged drawing positions, field rectangles, text, and images on affected loaded pages 문제가 수정되어 이전의 잘못된 출력이나 진단을 피합니다
Version 2.146.3
Fixed
- pagination for repeating fixed-position XFA data sections 문제가 수정되어 이전의 잘못된 출력이나 진단을 피합니다
- more accurate off-page diagnostics for XFA forms loaded from existing PDFs 문제가 수정되어 이전의 잘못된 출력이나 진단을 피합니다
Version 2.146.2
Added
- 이제 XFA 페이지 나누기가 여러 콘텐츠 영역에 걸쳐 적용됩니다: 페이지가 여러 콘텐츠 영역을 정의하면 흐름 콘텐츠가 순서대로 채워지며—새 페이지로 넘어가기 전에 같은 페이지의 다음 영역에서 계속되어—여러 열과 여러 영역으로 구성된 양식 레이아웃이 올바르게 나뉩니다
- 이제 길게 반복되는 섹션이 여러 페이지에 걸쳐 나뉩니다: 레코드마다 한 번씩 반복되어 콘텐츠 영역을 넘어서는 데이터 기반 목록은 행을 잃지 않고 다음 페이지로 이어집니다
- 이제 섹션 나누기가 적용됩니다: 새 페이지에서 시작하도록 표시된 양식 섹션은 현재 페이지에 공간이 남아 있어도 새 페이지에서 시작하며, 영역 나누기는 섹션을 다음 콘텐츠 영역으로 이동합니다
Version 2.146.1
Added
- 이제 XFA 양식이 자동으로 여러 페이지로 분할됩니다. 흐름 콘텐츠—긴 데이터 기반 목록이나 여러 필드 묶음 등—이 페이지 콘텐츠 영역 높이를 초과하면 넘치는 부분이 아래쪽 가장자리를 벗어나지 않고 새 페이지로 이어집니다. 단일 페이지 양식은 영향을 받지 않고 동일한 출력을 생성합니다
Version 2.146.0
Changed
- XFA에서 AcroForm으로의 평탄화가 이제 평탄화된 각 필드와 그래픽을 항목별 페이지 할당을 통해 라우팅합니다—향후 릴리스의 여러 페이지 페이지네이션을 위한 내부 기반이며, 단일 페이지 양식은 영향을 받지 않고 동일한 출력을 생성합니다
Version 2.145.4
Changed
- XFA 테이블 및 왼쪽에서 오른쪽(lr-tb) 레이아웃을 실제 XFA 양식—송장, 구매 주문서, 지불 요청, 데이터 그리드—으로 검증하여, 데이터 기반 테이블이 레코드당 한 행씩 확장되고 각 셀이 올바른 행과 열에 배치되며 이전의 위치 기반 처리에 비해 필드가 손실되지 않음을 확인했습니다
- 자동 너비 테이블 열(
columnWidths의-1항목)에 측정 가능한 너비가 없는 확장 가능한 셀만 포함된 경우, 누락된 열이 자동으로 생략되지 않고XFAFlattenWarnings를 통해 보고됩니다
Version 2.145.3
Added
- 자동 너비로 설정된 표 열(
columnWidths의-1항목 또는 지정되지 않은 열)이 이제 가장 넓은 셀에 맞춰 크기가 조정되어, 자동 너비 열의 모든 셀이 모든 행에서 같은 위치에 정렬됩니다; 고정 너비와 자동 너비를 함께 사용하는 표도 이제 일관되게 배치됩니다
Version 2.145.2
Added
- 데이터 기반 XFA 테이블이 이제 올바르게 확장됩니다: 반복하도록 표시된 테이블 행(
<occur>사용)은 데이터 레코드마다 한 행을 생성하므로, 송장과 항목 목록이 단일 템플릿 행이 아니라 항목마다 한 행으로 평면화되며, 내용이 없는 행 마크업은 더 이상 열을 밀어내지 않습니다
Version 2.145.1
Added
- 이제 XFA 양식에서 테이블 레이아웃을 사용할 수 있습니다.
layout="table"이 지정된 하위 양식은layout="row"자식 요소를 정렬된 열로 배치하며, 열 너비는 테이블의columnWidths에서 가져오고 각 행의 높이는 가장 높은 셀에 따라 결정됩니다. 평면화된 테이블(송장, 항목 목록, 데이터 그리드)은 이제 셀을 왼쪽 가장자리에서 겹치지 않고 올바른 행과 열에 배치합니다
Version 2.145.0
Added
- 이제 XFA 양식에서 왼쪽에서 오른쪽으로 타일링하는 레이아웃을 사용할 수 있습니다.
layout="lr-tb"를 지정한 subform은 필드 및 그리기 하위 요소를 나란히 배치하고, 다음 요소가 컨테이너 너비에 들어가지 않으면 새 줄로 넘깁니다. 컨트롤을 줄 바꿈 그리드에 배치하는 평면화된 양식이—단일 세로 열이 아니라—이제 이를 올바르게 배치합니다
Version 2.144.5
Fixed
- x 및/또는 y 위치를 생략한 XFA 양식 필드—생략된 좌표가 컨테이너 원점으로 기본 설정되는, 위치 지정 레이아웃에서 흔하고 유효한 단축 표기—가 더 이상 누락되지 않습니다. 주소 블록, 섹션, 표가 이 기본값에 의존하던 실제 양식은 이제 필드를 조용히 잃는 대신 전체 필드 집합으로 평탄화됩니다
- 위에서 아래로 흐르는 양식 안의 중첩된 하위 섹션이 이제 자체 콘텐츠 높이만큼 수직 커서를 전진시켜, 인접한 섹션이 같은 위치에서 겹치는 대신 위아래로 쌓입니다. 여러 섹션으로 흐르는 양식이 이제 올바른 수직 순서로 배치됩니다
Version 2.144.4
Added
- 이제 데이터로 구동되는 반복 섹션이 있는 XFA 양식이 지원됩니다.
<occur max="-1"/>(또는 기본값이 아닌 최대값)이 있는 하위 양식은datasets패킷의 일치하는 데이터 그룹마다 하나의 인스턴스로 확장되며, 각 인스턴스는 해당 행 값에 필드를 바인딩합니다. 묵시적 데이터 세트 바인딩을 사용하여 가변 길이 목록이나 테이블을 생성하는 양식이 이제 올바른 필드 수와 행별 올바른 값으로 올바르게 평면화됩니다
Version 2.144.3
Added
- 이제 XFA 양식에서 위에서 아래로 흐르는 레이아웃을 사용할 수 있습니다.
layout="tb"가 지정된 하위 양식은 필드 및 그리기 자식 요소를 세로로 쌓으며—각 요소는 이전 요소 아래에 배치됩니다—해당 자식 요소가 명시적 위치를 지정하지 않은 경우에도 마찬가지입니다. 고정 좌표 대신 자동 세로 흐름에 의존하는 평면화된 양식도 이제 필드를 올바르게 배치합니다
Version 2.144.2
Fixed
- 첫 번째 패킷이 DOCTYPE 선언으로 시작하는 XFA 양식(일부 XFA 디자인 도구가 이렇게 내보냅니다)이 이제 템플릿 누락 오류로 실패하지 않고
FlattenLoadedXFA를 통해 올바르게 평면화됩니다. DOCTYPE 프롤로그가 앞에 와도 로더가 루트 요소xdp:xdp를 인식합니다 - 양식의 DOCTYPE에 선언된 XML 내부 엔터티(예:
<!ENTITY name "value">)가 이제 양식에서 해당&name;참조가 나타나는 모든 위치에서 확장되므로, 평면화된 필드에 해석된 텍스트가 담깁니다
Security
- XFA 양식이 참조하는 외부 XML 엔터티(
SYSTEM또는PUBLIC)는 평면화 중에 절대 해석되지 않습니다. HotPDF는 참조된 URL이나 파일을 가져오지 않아 XXE(XML 외부 엔터티) 공격을 방지합니다. 이러한 참조는 빈 텍스트로 확장되고XFAFlattenWarnings를 통해 보고됩니다
Version 2.144.0
Changed
- XFA에서 AcroForm으로의 평탄화가 이제 전용 2패스 레이아웃 엔진을 통해 실행됩니다. 먼저 요소의 위치를 계산한 다음 필드와 그래픽을 내보냅니다. 정적 위치 지정 양식은 동일한 출력을 생성하며, 이 내부 변경은 향후 릴리스에서 제공될 흐름 레이아웃 및 반복 섹션 지원의 토대가 됩니다
Version 2.143.5
Fixed
/XFA항목을 packet 배열로 저장하는 실제 XFA 양식이 템플릿 누락 오류로 실패하지 않고FlattenLoadedXFA를 통해 올바르게 평탄화됩니다. 이는 packet 스트림이 개별적으로 압축되어 직접 읽을 수 있는 필터가 없는 양식과 구성 packet을 템플릿보다 앞에 나열하는 양식을 모두 포함하며, 둘 다 전문 XFA 디자인 도구가 내보낸 PDF에서 흔히 볼 수 있습니다
Added
- XFA
<draw>평탄화가 이제 정적 텍스트 레이블(양식 제목과 필드 캡션)을 네이티브 페이지 텍스트로 렌더링하며 레이블의 글꼴, 크기, 색상을 유지하므로 XFA 엔진이 없는 리더에서도 평탄화된 양식에 계속 표시됩니다 - XFA 버튼 위젯이 이제 캡션 텍스트를 유지한 채 네이티브 AcroForm 푸시 버튼으로 변환되어 작업 버튼이 평탄화된 양식에 나타납니다
Version 2.143.4
Added
- 새로운
FlattenLoadedXFA메서드는 이미 로드된 PDF에 포함된 XFA 양식을 네이티브 AcroForm 필드와 정적 페이지 그래픽으로 평탄화하여, 디스크에서 연 문서에 대한 XFA에서 AcroForm으로의 변환을 완성합니다(이전 릴리스에서는ApplyXFAAsAcroForm을 통해 호출자가 제공한 XFA 바이트를 평탄화했습니다). 양식의/XFA항목을 단일 스트림이든 패킷 배열이든 읽은 다음/XFA를 제거하고 동적 렌더링 플래그를 지우므로, 결과는 모든 PDF 뷰어가 표시하는 순수한 AcroForm이 됩니다. 생성된 필드 수를 반환하며, 로드된 PDF에 XFA가 없으면 0을 반환합니다 - 두 XFA 평탄화 진입점 모두 이제
Editable옵션을 받습니다. 켜 두면(기본값) 입력 가능한 필드가 되고, 끄면 생성된 모든 필드가 읽기 전용으로 표시됩니다 - XFA에서는 허용되지만 AcroForm에서는 허용되지 않는 중복 XFA 필드 이름은 이제 숫자 접미사로 자동으로 고유화되며, 이름 변경은
XFAFlattenWarnings를 통해 보고됩니다 - 서로 다른 템플릿 스키마 버전으로 작성된 XFA 템플릿도 허용됩니다. 인식되지 않는 템플릿 네임스페이스는 거부되지 않고 경고로 기록되므로 양식은 계속 평탄화됩니다
Version 2.143.3
Added
- XFA에서 AcroForm으로의 평탄화가 이제 XFA 템플릿의 정적
<draw>그래픽을 네이티브 페이지 콘텐츠로 재현합니다. 따라서 사각형, 선, 호, 포함된 이미지가 XFA 엔진을 구현하지 않는 PDF 뷰어에서도 평탄화된 양식에서 원래 위치를 유지합니다. 사각형과 선은 XFA 테두리 두께와 색상으로 그려지고, 호는 시작 각도와 스윈 각도에 따라 매끈한 곡선으로 렌더링되며, 포함된 PNG 또는 JPEG 이미지는 디코딩되어 원래 상자 안에 그려집니다
Version 2.143.2
Added
- XFA에서 AcroForm으로의 평면화가 이제 필드 스타일을 생성된 AcroForm 필드에 적용합니다. XFA 글꼴 모음 및 크기, 텍스트 색상, 필드 테두리 색상 및 너비, 가로 텍스트 정렬이 필드의 기본 모양, 테두리, 정렬로 변환되므로 평면화된 XFA 양식은 XFA 엔진을 구현하지 않는 표준 PDF 뷰어에서도 의도한 모양을 유지합니다. 이번 릴리스에서 글꼴 선택은 표준 PDF 글꼴에 매핑되며, 전체 글꼴 임베딩은 추후 지원될 예정입니다
Version 2.143.1
Added
ApplyXFAAsAcroForm이 수행하는 XFA→AcroForm 평탄화가 이제 텍스트 필드뿐 아니라 숫자, 날짜, 확인란, 라디오 버튼, 선택 목록, 디지털 서명 필드도 변환합니다. 각 XFA<ui>위젯은 가장 가까운 기본 AcroForm 필드로 매핑됩니다. 숫자와 날짜 입력은 텍스트 필드가 되고, check button은 확인란(또는 exclusion group 안에 있을 때는 라디오 버튼 그룹)이 되며, 선택 목록은 콤보 상자 또는 다중 선택일 때는 목록 상자가 됩니다. 필드 값은 계속해서 먼저 form 패킷에서, 그다음 datasets 패킷에서 가져옵니다
Version 2.143.0
Added
- 새로운
ApplyXFAAsAcroForm메서드는 호출자가 제공한 XFA(XML Forms Architecture) 양식을 기본 AcroForm 텍스트 필드로 변환하여, XFA 엔진을 구현하지 않는 최신 PDF 뷰어에서도 정적 XFA 양식을 표시하고 입력할 수 있게 합니다. 이번 첫 릴리스는 텍스트 필드를 지원하며, 값은 form 패킷에서 우선 가져오고 없으면 datasets 패킷에서 가져옵니다. 이후 더 많은 필드 유형, 스타일, 그래픽이 추가될 예정입니다.XFAFlattenWarnings는 변환할 수 없는 요소를 보고합니다
Version 2.142.1
Changed
- PAdES Seed Value 첨부 헬퍼는 이제 후속 서명자가 PAdES 프로필을 위반하도록 강제하는 값을 거부합니다(ETSI EN 319 142-2 V1.2.1 §4.2.6).
/SubFilter제약은 반드시adbe.pkcs7.detached또는ETSI.CAdES.detached여야 하며,/DigestMethod제약은MD5,SHA1, 또는SHA-1일 수 없습니다. 생산자는 프로필을 위반하는/SV사전을 조용히 발행하는 대신 명확한 진단 예외를 발생시킵니다
Version 2.142.0
Added
- 새 메서드
AddXFASignaturePacket은 호출자가 생성한 XAdES / XML-DSig 서명을 XFAsignature패킷으로 AcroForm/XFA배열에 삽입합니다(ISO 32000-1 §12.7.8). 서명된 XFA 양식용입니다. HotPDF는 서명을 생성하거나 구문 분석하지 않습니다. 호출자가 XML 암호화 라이브러리로 XFA datasets에 대해 서명을 생성하고, HotPDF는 이를 FlateDecode 패킷으로 삽입합니다.AddXFAPacket과 동일한 PDF/A 및 PDF/X 거부, 단일 스트림 상호 배타, 중복 패킷 방지가 적용됩니다
Version 2.141.2
Added
- 새 공개 API
RegisterDefaultColorSpace(Which, ColorSpaceCS)는 ISO 32000-1 §8.6.5.6 및 PDF/A Competence Center TechNote 0002 §1.3에 따라 ICCBased 색 공간(RegisterICCProfile로 생성됨)을 문서 전체의/DefaultGray,/DefaultRGB또는/DefaultCMYK매핑으로 등록합니다. EndDoc 시 헬퍼는 모든 페이지를 순회하여 각 페이지의Resources/ColorSpace사전에서 일치하는/DefaultX키 아래에[/ICCBased <profile-stream>]항목을 추가합니다. 구성 요소 수는 패밀리에 대해 유효성이 검사됩니다(DefaultGray→ N=1,DefaultRGB→ N=3,DefaultCMYK→ N=4).CSName이 빈 문자열인 호출은 매핑을 지우고, 기존 페이지 수준/DefaultX항목은 보존됩니다(호출자 재정의가 우선). 이것이 있으면 DeviceRGB와 DeviceCMYK 콘텐츠를 혼합하는 문서도 단일GTS_PDFA1OutputIntent 프로필로 PDF/A-1 §6.2.3.3을 만족할 수 있습니다. v2.141.1에서 도입된 §6.2.3.3 일관성 검사가 일치하는 Default 색 공간이 등록되면 DeviceX 사용을 흡수된 것으로 취급하기 때문입니다
Version 2.141.1
Changed
- PDF/A 장치 색 공간 ↔ OutputIntent 일관성 검사 (ISO 19005-1 §6.2.3.3 + PDF/A Competence Center TechNote 0002 §4.1). 이제 EndDoc는 문서가 DeviceRGB와 DeviceCMYK 콘텐츠를 모두 사용하는 경우 (단일 GTS_PDFA1 OutputIntent ICC 프로필이 두 색 모델 모두에 동시에 일치할 수 없음), 또는 DeviceCMYK 콘텐츠가 RGB OutputIntent 프로필과 짝을 이루는 경우 (및 그 반대의 경우)에 예외를 발생시킵니다. TN0002 §4.1에 따라 DeviceGray 콘텐츠는 Gray / RGB / CMYK OutputIntent 프로필 중 어느 것과도 호환됩니다. 이미지 XObject는 프로듀서가 실제로 발행하는 색 공간에 따라 추적됩니다(JPEG 및 24비트 Flate는 DeviceRGB, CCITTFax는 DeviceGray). TN0002 §4.3에 따라 마크업 주석의
/C및/IC배열은 DeviceRGB로 계산됩니다. ICCBased / CalGray / CalRGB / Lab 색 공간은 이 검사에서 제외됩니다
Added
THotPDF의 읽기 전용 속성UsedDeviceGray,UsedDeviceRGB,UsedDeviceCMYK는 진행 중인 장치 색 공간 사용 플래그를 노출하므로 호출자는 EndDoc 전에 일관성 검사 상태를 확인할 수 있습니다
Version 2.141.0
Added
- 이제 새 메서드
SetXFADocument를 통해 XFA 양식을 단일/XFA스트림으로 내보낼 수 있습니다. 전체 XFA/XDP 문서를 하나의 스트림에 담으며(ISO 32000-1 §12.7.8), 패킷 단위 배열 형식인AddXFAPacket의 대안입니다. 두 형식은 상호 배타적입니다 - 새 속성
XFANeedsRendering은 Catalog의/NeedsRendering플래그를 설정하여(ISO 32000-1 §7.7.2) 문서를 처음 열 때 뷰어가 동적 XFA 양식을 다시 생성하도록 합니다. 기본값은 꺼짐이며, XFA가 아닌 문서는 바이트 단위로 동일하게 유지됩니다
Changed
- 이제 XFA 문서는 배열 형식
/XFA에 필요한xdp:xdp시작 및 종료 래퍼 패킷을 보여 줍니다. 이를 통해 각 패킷 스트림이 연결되어 올바른 형식의 XDP 문서가 됩니다(ISO 32000-1 §12.7.8)
Fixed
- 이제 포함된 파일의
/SubtypeMIME 형식이 ISO 32000-1 §7.3.5에 따라/를#2f로 이스케이프한 올바른 PDF 이름(예:/application#2fxml)으로 기록되어, 엄격한 리더가 미디어 형식을 올바르게 구문 분석합니다.AddPDFA3AssociatedFile및AddXAdESAssociatedFile에 영향을 줍니다 - XAdES 서명 스트림은 비어 있을 수 없으므로, 이제
AddXAdESAssociatedFile은 빈 XML 페이로드를 거부합니다
Version 2.140.5
Changed
- PAdES 문서 타임스탬프 사전은 이제 사양에서 요구하는
/Type /DocTimeStamp를/Type /Sig대신 출력하고, 규격이 「존재해서는 안 된다」고 명시하는/M//Reason//Location//ContactInfo항목도 생략합니다. 이로써 ETSI EN 319 142-1 V1.2.1 §5.4.3에 대한 적합성이 개선됩니다 - DSS의 Signature VRI 하위 사전은 이제 중복된 스트림 객체를 쓰는 대신 DSS 최상위의
Certs/CRLs/OCSPs배열과 동일한 간접 스트림을 참조합니다. 이는 ETSI EN 319 142-1 V1.2.1 §5.4.2.3의 불변량과 §6.3 주 s)의 인증서 값 중복 회피 지침에 부합합니다 - Catalog에 선언되는
/Extensions /ESIC /ExtensionLevel값은 PAdES baseline 서명이/SubFilter /ETSI.CAdES.detached로 추가될 때 자동으로 2로 상향됩니다(규격 §6.3 요건 l)은 Level 2로 식별됨). DSS 또는 문서 타임스탬프 데이터만 담는 문서는 계속 Level 1을 사용합니다
Added
- PAdES 서명은 이제 새 옵션
AdditionalCertsDER을 통해 서명자 인증서와 함께 중간 CA 인증서를 CMSSignedData.certificates내부에 실어 보낼 수 있어, 검증자가 외부 조회 없이 신뢰 앵커까지의 경로를 구성하는 데 도움이 됩니다(ETSI EN 319 142-1 V1.2.1 §6.3 주 b)
Fixed
- PDF/A 준수: PDFACompliance가 활성화된 경우 Unicode TTF 서브셋터가 하위 CIDFont의 폰트 디스크립터에
/CIDSet비트스트림을 기록합니다. ISO 19005-1 §6.3.5 / ISO 19005-2 §6.2.11 / ISO 19005-3 §6.2.11 은 서브셋 CIDFont에 대해 포함된 CID 집합 선언을 요구하며, 이 스트림이 누락되면 필요한 모든 글리프가 임베드되어 있어도 veraPDF의 엄격 검사가 실패합니다. 비트스트림은 ISO 32000-1 §9.7.4.2 에 따라 MSB-first 배치 (CID 0은 바이트 0의 비트 7)이며 PDF/A 모드에서만 출력되므로, 비 PDF/A 출력은 바이트 단위로 변동이 없습니다
Version 2.140.4
Fixed
- 불러온 PDF를 증분 저장할 때, 원본에 남아 있던 고아 암호화 사전(트레일러가 더 이상 참조하지 않는 것)을 이제 추가되는 상호 참조 섹션에서 사용 가능(free)으로 표시합니다. 따라서 최신 리비전을 따라가는 리더에는 그 떠도는 사전이 더 이상 보이지 않습니다. 원본 바이트는 그대로 유지되며 그러한 잔여물이 없는 문서는 이전과 똑같이 기록됩니다. 2.140.3의 전체 저장 정리를 보완합니다
Version 2.140.3
Fixed
- AES-256으로 불러온 PDF를 저장할 때 원본 파일에 남아 있던 암호화 사전을 더 이상 그대로 함께 기록하지 않습니다. 원본 문서가 트레일러에서 더 이상 참조하지 않는 고아 암호화 사전을 가지고 있던 경우, 이전에는 출력에 그 떠도는 사전이 활성 사전과 나란히 포함되었지만 이제는 실제로 사용 중인 암호화 사전만 기록됩니다
Version 2.140.2
Added
- PAdES 서명 내부에 포함된 Adobe 폐기 정보 서명 속성이 이제 일반적인 CRL 및 OCSP 항목과 함께 X.509가 아닌 폐기 증거도 받아들입니다. 그래서 자체 OID로 식별되는 업계 특정 폐기 토큰이 서명 안에 함께 전달될 수 있습니다
- PAdES 서명이 이제 서명된 내용을 설명하는 CAdES content-hints 속성을 선언할 수 있습니다. 후속 서명자가 원본 콘텐츠 유형을 다시 유도하지 않고도 알아야 하는 다중 서명 워크플로에서 유용합니다
Version 2.140.1
Fixed
- AES-256으로 로드된 문서를 암호화할 때 텍스트 문자열이 배열이나 기타 비간접 컨테이너 안에 중첩되어 있어도 더 이상 멈추지 않습니다. 이러한 문자열은 무한 루프에 빠지지 않고 올바르게 암호화됩니다
- AES-256 문서를 열거나 복호화할 때 파일에 원본에서 남은 암호화 사전이 포함되어 있어도 더 이상 패딩 오류로 실패하지 않습니다. 복호화기는 이제 모든 암호화 사전을 건너뛰므로 모든 문자열 내용이 올바르게 복호화됩니다
Version 2.140.0
Changed
- AES-256 암호화 및 복호화는 이제 가능한 경우 CPU의 AES-NI 하드웨어 가속을 사용하며, 그렇지 않은 경우 이식 가능한 소프트웨어 구현으로 대체됩니다. 일반적인 데스크톱 CPU에서 AES-256-CBC 처리량이 암호화 시 약 148 MB/s에서 442 MB/s로(약 3×), 복호화 시 약 147 MB/s에서 832 MB/s로(약 5.7×) 향상됩니다
- 암호로 보호된 큰 PDF를 열 때 메모리 사용량이 크게 줄었습니다. 로더는 암호화 키를 복구하고 복호화하는 동안 더 이상 전체 원본 파일을 메모리에 캐시하지 않습니다. AES-256 문서는 구문 분석된 객체 모델에서 필요한 것을 가져오고, 기존 키 복구는 이제 전체 파일 대신 파일 끝부분만 읽습니다. 수 기가바이트 크기의 암호화 문서의 경우 파일 크기의 약 두 배에 달하는 일시적인 메모리 급증이 사라집니다
Version 2.139.3
Fixed
- 매우 큰 문서에서 Direct File API의 다시 쓰기 저장이 크게 빨라졌습니다. 메타데이터나 객체를 변경한 후 60,000페이지 / 883 MB 파일을 다시 저장하는 시간이 약 189초에서 약 21초로 단축되었습니다. 객체마다 복사 버퍼를 매번 다시 할당하지 않고 재사용하기 때문입니다. 같은 파일을 Direct File API로 열거나 복사하는 작업은 2~3초 정도를 유지합니다
Version 2.139.2
Fixed
- 로드된 PDF 1.5+ 객체 스트림 문서와 PDF 2.0 trailer 문서를
BeginDoc편집 후 다시 저장할 때 이제 유효한 페이지 트리가 유지됩니다. 이전에는 객체 스트림에서 복구된 페이지 딕셔너리가/Type /Page없이 다시 연결될 수 있어,EndDoc후 리더가 페이지 트리 안의 비페이지 객체를 보고했습니다
Version 2.139.1
Fixed
- AES-256과 교차 참조 스트림(선택적으로 압축 객체 스트림과 함께)을 결합한 암호화 문서가 이제 안정적으로 다시 열리고 다시 저장됩니다. 이전에는 암호화된 스트림의 데이터가 우연히 줄바꿈 바이트로 시작될 때 로더가 그 스트림을 1바이트 어긋나게 읽어 복호화 결과가 간헐적으로 손상되었고, 그래서 비밀번호 보호 파일이 때때로 열리지 않았습니다. 스트림 리더는 이제 데이터 경계를 정확히 따라가며 이러한 문서는 일관되게 열립니다
Version 2.139.0
Fixed
- 교차 참조 스트림과 압축 객체 스트림을 함께 사용하는 문서(PDF 1.5 이상)는 이제 표준 준수 로더에 의해 읽힙니다. 이러한 문서를 다시 열고 다시 저장해도 페이지 트리가 그대로 유지되며 원래 객체 번호도 보존됩니다. 이전 로더는 페이지 트리를 잃거나 객체를 다시 번호 매겨 저장 사본에서 페이지를 잃을 수 있었습니다
- 교차 참조 스트림 문서를 로드하는 동안
/Length가 간접 참조로 저장된 스트림이 이제 올바르게 해석되어 그 내용이 더 이상 손실되지 않습니다
Version 2.138.0
Fixed
- 헤더 버전이
%PDF-1.3또는%PDF-1.4와 같이 더 오래된 PDF 헤더 버전을 선언하지만 실제로는 교차 참조 스트림을 사용하는 문서가 이제 페이지가 없는 빈 문서로 열리는 대신 올바르게 로드됩니다. 라우팅은 선언된 헤더 버전이 아닌 실제 교차 참조 구조에서 결정되므로, 이런 종류의 매우 큰 파일도 예상대로 열립니다
Version 2.137.9
Added
- preflight 보고서를 위한 CSV 출력이
CreatePreflightReport,SavePreflightReport,CreatePreflightReportWithProfile의pfCSV를 통해 추가되었으며, 스프레드시트 및 배치 워크플로용으로 안정적인category,name,status,value,spec열을 사용합니다 - PreflightReport GUI와 HotPDFPreflight CLI에서 이제 CSV 출력을 선택할 수 있으며, CLI는 단일 파일 및 디렉토리 실행에 대해
-f csv를 허용합니다
Version 2.137.8
Fixed
- 네이티브 AES-256 buffer decrypt 경로가 강화되어, 호출자가 암호문 버퍼를 제공한 동일한
AnsiString에 복호화 결과를 다시 할당해도 입력 포인터가 무효화되지 않습니다
Version 2.137.7
Added
- loaded-document 페이지 작업을 위해 1 기반 page-range 문자열 지원이 추가되었으며,
HPDFParsePageRange,InsertPagesFromDocument와ExtractPagesToFile의 range overload, 그리고AppendPagesFromDocument를 포함합니다 - append, insert, extract 워크플로가 결정적인 페이지 수준 진행 상황을 보고할 수 있도록
OnPageOperationProgress가 추가되었습니다
Version 2.137.6
Added
- 페이지 수와 원본 바이트별 저장된 사본만 필요하고 전체 정상 객체 그래프를 빌드할 필요가 없는 대용량 파일 워크플로용으로
THotPDF.DACopyFile이 추가되었습니다 HugeFileBenchmark데모에 이제direct-copy행이 포함되며, 기본 작업 세트는 여전히 전체LoadFromFile+SaveLoadedDocument경로를 다룹니다
Changed
- 가능한 경우 기존 버퍼에서 복호화하여 AES-256 스트림 복호화의 메모리 복사를 줄였습니다. 여기에는 큰 암호화된 이미지 스트림용 로드된 스트림 메모리도 포함됩니다
Fixed
- 파일 기반 암호화 PDF 로딩을 개선하여 비밀번호 열기가 더 이상 원본 암호화 사전 값을 복구하기 위해 전체 소스 PDF를 캐시하지 않도록 했습니다
Version 2.137.5
Added
- 대용량 파일 워크플로용으로 Direct File API의 object-source 편집이 추가되었습니다. 애플리케이션은
DAOpenFileReadOnly로 PDF를 열고, 객체 수와 소스 본문을 검사하고, 객체 본문을 교체하거나 추가하고, 문서 정보를 업데이트하고, 완전히 다시 쓰인 사본을 저장할 수 있습니다 HugeFileBenchmark데모에 이제direct-rewrite작업이 포함되며, 이미지 전용 및 텍스트/이미지 혼합 대용량 PDF용 HTML/CSV 벤치마크 실행이 문서화됩니다
Changed
- Expanded Direct File API indexing to cover traditional xref tables and xref streams, including compressed object entries, so image-heavy PDFs and object-heavy PDFs can use the lightweight path
- Optimized Direct File API full rewrites by copying unchanged direct objects in source-offset order and merging contiguous ranges, greatly reducing random I/O on PDFs with hundreds of thousands of objects
Version 2.137.4
Added
- GUI는 이제 표준 text, JSON, HTML report, 선택적 password, profile INI files, 내장 presets, single-file PDF/VT validation, embedded-report PDF output, report preview, status logging, automatic output naming, 생성 파일 빠른 열기를 지원합니다
Changed
- Delphi
PreflightReportdemo를 console sample에서 single-file preflight workflows용 대화형 VCL GUI 도구로 업그레이드했습니다
Removed
- command-line arguments가 없을 때 sample PDF와 report를 자동 생성하던 이전 시작 동작을 제거했습니다
Version 2.137.3
Added
- PDF/VT 검증은 이제 요소 텍스트뿐만 아니라 RDF 속성으로 작성된 XMP 속성도 인식하며, 일반적인
pdfvtid:GTS_PDFVTVersion,pdfvtid:GTS_PDFVTModDate및xmp:ModifyDate패킷 스타일을 다룹니다
Fixed
- 속성 스타일 PDF/VT 메타데이터 감지를 나머지 구조적 PDF/VT 검사와 분리된 상태로 유지하는 Delphi 회귀 테스트 범위가 추가되었습니다
Version 2.137.2
Changed
- 임베드된 preflight 보고서 검증이 개선되어
%%EOF뒤에 정당한 최종 줄바꿈으로 끝나는 소스 PDF가 저장된 지문과 계속 일치하게 됩니다
Fixed
- BOM이 있는 UTF-8로 저장된 preflight profile이 첫 줄이 section header일 때 올바르게 로드됩니다
- PDF literal string escape 디코딩이 강화되어, escape된 owner 또는 user 항목이 있는 암호화된 PDF에 대한 비밀번호 검증과 암호화되지 않은 사본 출력이 개선됩니다
Version 2.137.1
Changed
- CFF 파서 안전성을 직접 byte-array 검사로 확장하여 잘못된 입력 후 리더 위치를 복원하고 실패한 검사 시 오래된 레이아웃 상태를 지웁니다
Fixed
- C++Builder wrapper 호환 CFF 스트림 로더가 강화되어 nil 스트림 입력이
False를 반환하고 스트림을 역참조하는 대신 wrapper 상태를 재설정합니다
Version 2.137.0
Added
- 집중된 PDF/VT 검증을 위해 비밀번호 인식 오버로드가 포함된
THotPDF.ValidatePDFVT가 추가되었습니다. 텍스트 보고서는 XMP의 PDF/VT 주장, 메타데이터 네임스페이스, PDF/VT 수정 날짜 일치, PDF/X 기본 마커, output intent, 카탈로그DPartRoot구조, 로드 가능한 페이지, 그리고 페이지 수준DPart범위를 확인합니다 - 독립 실행형
HotPDFPreflightCLI는 이제--pdfvt를 받아들여 단일 PDF 또는 재귀적 디렉터리 스캔에 대한.pdfvt.txt검증 보고서를 작성합니다
Version 2.136.8
Added
- 손상된 CFF 및 Type 1 스트림에 대한 추가 Type 1/CFF 스모크 커버리지를 추가했으며, 파서 호출 실패 후에도 스트림 위치를 보존하고 오래된 메타데이터를 정리하도록 했음
Changed
- Type 1 PFB 및 CFF 파서의 실패 처리를 개선해 손상된 스트림 검사에서 입력 위치를 보존하고 오래된 메타데이터를 지우도록 했으며, 검사 실패 뒤 이전 글꼴 이름이 남아 보이지 않음
Version 2.136.7
Changed
- 메모리 내 CFF 데이터, ASCII Type 1 글꼴 데이터, 래퍼 수준 PFB 파일 로드, 래퍼 수준 CFF 스트림 로드를 포함하도록 Type 1/CFF 스모크 테스트를 확장해 Delphi 및 C++Builder 통합 경로를 모두 보호함
Fixed
- Type 1 PFB 및 CFF 파서 진입점을 강화해 스트림 기반 검사에서 호출자의 스트림 위치를 보존하고, 손상된 데이터를 안전하게 거부하며, Delphi 및 C++Builder 래퍼 경로를 통해 기본 Type 1/CFF 글꼴 메타데이터를 노출함
Version 2.136.6
Added
- CJK 유니코드 텍스트 출력, 대용량 다중 페이지 문서 생성, PFX 서명용 Delphi 기능 데모를 추가하고, CCITT Group 3 1D 및 2D 출력으로 이미지 압축 커버리지를 확장했음
Version 2.136.5
Changed
- 로드된 페이지 항목이 MediaBox를 반환하지 못해도 preflight 보고서가 계속 진행되도록 했으며, 보고서는 해당 페이지를 사용할 수 없음으로 표시해 큰 페이지 트리나 불일치가 있어도 진단 출력을 남김
- 여러 바이트 수준 preflight 스캐너를 최적화해 전체 꼬리 문자열 복사와 선형 중복 오브젝트 검색을 피하도록 했고, 10,000페이지 구현 한계 샘플이 이제 120초 스트레스 테스트 예산 안에서 완료됨
- preflight 스트레스 실행기는 이제 파일당 120초 제한을 기본값으로 사용하며, PreflightReport 데모는 profile 인식 출력 경로 이후에도 정상적으로 다시 빌드됨
Version 2.136.4
Added
HotPDFPreflight명령줄 도구용 preflight cookbook, 생성형 preflight API 맵, 대용량 디렉터리 스트레스 테스트 워크플로를 추가했음. 스트레스 실행기는 각 PDF를 파일별 제한 시간으로 분리하고 JSON, Markdown, CSV, report, log 증거를 기록함
Changed
D:\PDFdoc\PDF-Samples기준으로 1000개 파일 베이스라인을 기록했으며, 997개 통과, 1개 실패, 2개 시간 초과, 경과 111.422초, 초당 8.975개 파일이었음
Fixed
- preflight fingerprint helper의 전체 재빌드 문제를 해결했으며,
CreatePreflightReport가 사용하기 전에 helper를 선언해 소스에서HPDFDoc.pas를 다시 빌드하는 콘솔 도구가 깔끔하게 컴파일되도록 했음
Version 2.136.3
Added
- 독립형
HotPDFPreflightCLI 도구에--aggregate <file>옵션을 추가해 파일별 보고서가 끝난 뒤THotPDF.AggregatePreflightReports가 만든 배치 요약을 기록하도록 했음. 집계에는 처리된 모든 PDF의 상태, 크기, 경고 수와 합계가 포함됨
Changed
--profile/--preset유무와 상관없이 단일 파일과 재귀 디렉터리 순회를 모두 지원함. 집계는 각 보고서의 본문 텍스트에서 계산되므로 profile 필터링 결과가 요약에 반영됨- 예:
HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reports --aggregate C:\Archive\Aggregate.txt는 모든 PDF의 JSON 보고서와 하나의 배치 요약을 기록함
Version 2.136.2
Added
- 독립형
HotPDFPreflightCLI 도구에--profile <file>및--preset <name>옵션을 추가해 각 보고서를 기록하기 전에 preflight profile로 필터링하도록 했음.-f text|json|html,-p <password>,-r재귀 디렉터리 순회와 함께 사용 가능함
Changed
- 새 두 옵션은 서로 배타적이며 둘 다 넘기면 나중 값이 우선함. preset 값은
THotPDF.GetBuiltInPreflightProfile이 인식하는 이름과 일치해 CI 파이프라인이 INI 파일 없이 표준 구성을 가져올 수 있음 - 예:
HotPDFPreflight C:\Archive -r --preset silent-actions -f json -o C:\Archive\reports는 디렉터리 트리의 모든 PDF에silent-actionspreset을 적용한 JSON 보고서를 기록함
Version 2.136.1
Added
- Delphi
PreflightReport데모가 이제profile=<file>또는preset=<name>을 추가 CLI 인자로 받아, 기록 전에 profile을 통해 보고서를 필터링함. 기존json/html/embed출력 형식 플래그와 함께 사용 가능함
Changed
- 예:
PreflightReport.exe Input.pdf Report.txt "" text profile=tuned.ini또는preset=compact/preset=silent-actions - preset 값은
THotPDF.GetBuiltInPreflightProfile이 인식하는 이름을 그대로 따르므로, 이 데모는 INI 파일을 만들지 않고도 profile 테스트용으로 활용 가능함
Version 2.136.0
Added
- profile 계층 구성을 위한
THotPDF.MergePreflightProfiles를 추가했음. 결과는 두 입력의 중복 제거 합집합이며,DisableChecks와DisableWarnings는 병합되고DisableHints는 논리 OR 로 합쳐져compact같은 preset과 프로젝트별 조정을 함께 쓰기 좋음 - 구조 비교용
THotPDF.DiffPreflightProfiles를 추가했음. 두 profile이 같으면True를 반환하고, 아니면OnlyInA와OnlyInB출력 인자가 각 측에만 있는 항목을 줄바꿈된check:<name>/warn:<name>/option:hints=false토큰으로 나열함
Changed
- 이 두 helper로 profile 생명주기인
Load/GetBuiltIn/Save/Apply/Validate/Merge/Diff가 완성됨
Version 2.135.0
Added
CreatePreflightReport,LoadPreflightProfile,ApplyPreflightProfile, format 변환기를 하나의 호출로 묶는 편의 래퍼THotPDF.CreatePreflightReportWithProfile를 추가했음- 새 overload는 source PDF, 선택적 password, 선택적 profile file, 대상 형식(
pfText,pfJSON,pfHTML) 을 받아 최종 보고서 본문을 반환함. 빈ProfileFile을 넘기면 profile 단계를 완전히 건너뛰므로 profile 유무와 관계없이 같은 호출 지점을 유지할 수 있음
Changed
- 기존 네 개의 기반 API 는 계속 유지되며 기존 호출 체인은 그대로 동작함, 새 래퍼는 순수한 추가 기능임
Version 2.134.0
Added
THPDFPreflightProfile레코드를 INI 파일로 다시 쓰는THotPDF.SavePreflightProfile를 추가했음. 출력 형식은LoadPreflightProfile이 읽는 형식과 같아, 잘 구성된 profile에 대해서는 두 함수가 정확한 역함수임
Changed
GetBuiltInPreflightProfile(v2.133.0) 로 built-in preset을 불러와 목록이나 플래그를 수정한 뒤 결과를SavePreflightProfile로 저장하는 'preset 불러오기, 조정, 저장' 워크플로를 지원함- 내용이 없는 섹션은 출력에서 생략되므로 빈 profile은 비어 있는 섹션 헤더 셋이 아니라 한 줄짜리 주석만 생성함
Version 2.133.0
Added
- 공통 워크플로용으로 바로 쓸 수 있는
THPDFPreflightProfile레코드를 반환하는THotPDF.GetBuiltInPreflightProfile를 추가했음. 호출자가 표준 구성을 위한 INI 파일을 따로 관리할 필요가 없음
Changed
- 인식되는 이름은 대소문자 구분 없이 다음과 같음:
default또는 빈 문자열은 빈 profile을 반환하고,compact는 모든Hint줄을 꺼서 보고서를 더 짧게 만들며,silent-actions는 PDF 1.7 sec 12.6.4 작업 경고와EmbeddedFile,RichMedia를 모두 끔. 멀티미디어나 상호작용 작업을 의도적으로 포함하는 워크플로에 적합함 - 알 수 없는 이름도 빈 profile을 반환하므로 오타가 있어도 함수가 예외를 던지지 않음. 오타를 오류로 드러내고 싶을 때는
ValidatePreflightProfile(v2.132.0) 와 함께 사용함
Version 2.132.0
Added
- 방어적 profile 검사용
THotPDF.ValidatePreflightProfile를 추가했음. 이 함수는 로드된 profile의DisableChecks와DisableWarnings목록을 훑어 현재 preflight 구현이 인식하지 못하는 이름을 표시하고, 알 수 없는 이름을 ', ' 로 연결해UnknownNames출력 인자로 반환함
Changed
- 더 새롭거나 더 오래된 HotPDF 버전을 기준으로 작성된 profile 파일을 찾는 데 유용함. 검증이 없으면
OpenAction대신OpneAction같은 오타나 이름이 바뀐 검사가 조용히 아무것도 비활성화하지 못함 - 이 검사는 순수하게 방어용이며 profile 자체는 수정하지 않음. 호출자는 중단할지, 경고를 남길지, 부분적으로만 적용된 profile로 계속 진행할지 정할 수 있음
Version 2.131.0
Added
- HotPDF preflight 보고서를 veraPDF 검증 출력 형식에 맞춘 JSON 문서로 바꾸는
THotPDF.ConvertPreflightReportToVeraPDFStyle를 추가했음. 최상위profile,itemDetails/taskResult/validationResult를 담은jobs배열, 그리고validationResult.details아래의ruleViolations배열을 포함함
Changed
- veraPDF 와 완전한 wire 호환이 아니라 HotPDF 스타일의 출력임. 목표는 이미 veraPDF JSON을 소비하는 하위 도구가 다른 데이터 배치를 새로 익히지 않고도 최소한의 필드명 매핑만으로 HotPDF 출력에 적응하도록 하는 것임
- 규칙 위반에는 기본 HotPDF JSON 출력과 같은
specificationISO 조항 교차 참조가 포함되므로, veraPDF 스타일 경로로 소비해도 규격 수준 추적성을 유지함
Version 2.130.0
Added
- 선택적
Password인자 포함 여부에 따른 두 overload를 가진THotPDF.EmbedPreflightReportAsXMP를 추가했음. 이 함수는 source PDF의 복사본에 preflight 보고서를 PDF 스타일 주석 블록으로 덧붙이며, 그 payload 는xmlns:hotpdf네임스페이스를 가진 XMP / RDF 임
Changed
- 각 보고서 줄은
hotpdf:<name>요소가 됨. PASS / FAIL 검사는 심각도를 속성으로 담고, warning, hint, info 줄은 요소 이름에warn,hint,info접두사를 사용함 xpacket마커를 찾는 XMP 인식 도구는 삽입된 보고서를 노출할 수 있음. PDF 리더는 추가된 바이트가 객체 그래프 밖에 있으므로 계속 무시함. 이는 보관 친화적인 XMP 삽입이지, 규격을 완전히 따른 XMP 통합은 아니며 XMP payload 는 catalog의/Metadata항목에서 참조되지 않음
Version 2.129.0
Added
- 새
THPDFPreflightProfile레코드와 함께THotPDF.LoadPreflightProfile및THotPDF.ApplyPreflightProfile을 추가했음. profile 을 사용하면 분석을 다시 돌리지 않고도 보고서 출력을 조정할 수 있으며, 특정 check / warning 이름이나 모든 Hint 줄을 숨길 수 있음
Changed
- profile 파일은
[disable-checks],[disable-warnings],[options]섹션을 쓰는 단순한 INI 스타일 형식을 사용함. 주석과 빈 줄은 무시되고, 빈 profile 은 보고서를 그대로 통과시킴
Fixed
- 필터링 후에는 뒤쪽
Summary와Warnings줄을 다시 계산해 숨긴 항목이 Failed 및 Warnings 합계에 더 이상 반영되지 않도록 했음. 나머지 보고서는 그대로 통과하므로 JSON / HTML 변환기, diff helper, validate / embed / aggregate API 가 코드 변경 없이 필터링된 보고서에서도 계속 동작함
Version 2.128.2
Added
- PDF 디렉터리를 스캔해 독립형 정적 HTML 대시보드를 만드는 Delphi
PreflightDashboard콘솔 데모를 추가했음. 파일마다 하나의<stem>.preflight.html와 하나의index.html요약 표를 생성함
Changed
- 대시보드 상단에는 total / passed / failed 수가 표시되고, 모든 PDF의 status, size, summary, 상세 보고서 링크가 들어간 표가 제공됨. 실패 행은 강조되며 PASS 와 FAIL 배지는 빠르게 훑어볼 수 있도록 색으로 구분됨
- 출력은 정적 파일 디렉터리이며 HTTP 서버가 필요 없음. 디렉터리를 CI artifact 페이지에 게시하거나, 아무 웹 서버로 서빙하거나,
index.html을 브라우저에서 직접 열 수 있음
Version 2.128.1
Added
- 게시된 스키마(
Docs/preflight-schema.json)에 대해 HotPDF preflight JSON 출력을 검증하는 Python 유틸리티tools/validate-preflight-json.py를 추가했음. 스크립트는 입력마다 PASS/FAIL 한 줄을 보고하고, 어떤 입력이라도 검증에 실패하면 0이 아닌 상태로 종료해 CI 파이프라인이 스키마 준수를 기준으로 차단할 수 있음
Changed
- 스키마가 모든 객체에
additionalProperties: false를 선언하므로 검증은 엄격하며, 알 수 없는 필드는 조용히 지나가지 않고 즉시 실패를 일으킴. 필요한 의존성은 표준jsonschemaPython 패키지임
Version 2.128.0
Added
- 배치 요약용
THotPDF.AggregatePreflightReports를 추가했음. 이 함수는 파일별 preflight 보고서 배열을 받아 각 파일의 pass/fail 상태, 바이트 크기, 경고 수와 passed, failed, warnings, bytes scanned 합계를 담은 하나의 집계를 출력함
Changed
- v2.125.1
HotPDFPreflight독립형 CLI 와 자연스럽게 짝을 이룸. CLI 로 PDF마다 보고서를 만든 뒤 그 본문을AggregatePreflightReports에 넣으면 대시보드용 배치 요약이 됨 - 빈 입력 배열은 빈 결과 문자열을 돌려주므로 호출자는 파일이 0개인 디렉터리를 따로 검사하지 않고도 집계를 다른 출력에 붙일 수 있음
Version 2.127.0
Added
- 선택적
Password인자 포함 여부에 따른 두 overload 를 가진THotPDF.RepairPDFFromPreflightReport를 추가했음. 이 함수는 손상된 PDF에 대해 보수적인 바이트 수준 수리만 적용하며, 마지막%%EOF뒤의 남는 바이트를 버리고 어디에도 없으면 누락된%%EOF를 덧붙임
Changed
- 적어도 하나의 수리가 적용되면
True를 반환하며,RepairsApplied는 적용된 수리를 한 줄씩 나열하는 출력 인자라서 호출자가 복구된 파일을 유지할지 더 강한 복구 도구로 넘길지 결정할 수 있음 - 오브젝트 그래프 수리 xref 표 재구성, 스트림 길이 패치, trailer 수정 는 의도적으로 범위 밖임. 이런 수정은 부분 복구 가능한 파일을 오히려 덜 복구 가능하게 만들 수 있기 때문임. 이 overload 의 수리는 잘 구성된 PDF 와 약하게 손상된 PDF 모두에 명확하게 안전한 작업으로만 제한됨
Version 2.126.1
Changed
Docs/preflight-schema.json에 preflight JSON 출력용 공식 JSON Schema 를 게시했으며, JSON Schema draft 2020-12 를 따름- 스키마는 모든 최상위 필드(
input,size,pdfVersion,xrefStyle) 와checks/info/hints/warnings배열,summary객체를 문서화해 소비자 파이프라인이 파싱 전에 JSON 출력을 검증할 수 있게 함 - 도움말 항목이 이제 하위 소비자를 스키마 파일로 안내함
Version 2.126.0
Added
- 줄 단위 preflight 보고서 비교용
THotPDF.ComparePreflightReports를 추가했음. 이 함수는 공통 줄은 두 칸 접두사를 쓰고,ReportA에만 있는 줄은-,ReportB에만 있는 줄은+를 쓰는 unified diff 비슷한 본문을 출력함
Changed
LoadAndValidatePreflightReport와 자연스럽게 짝을 이룸. roundtrip 검증이 실패하면 원본과 현재 보고서를ComparePreflightReports에 넣어 어떤 줄이 바뀌었는지 정확히 드러낼 수 있음- diff 알고리즘은
CreatePreflightReport의 결정적 key/value 출력에 맞춘 작은 greedy walk 이며, 일반 목적 LCS 구현을 끌어오지 않고도 보통 입력에 대해 간결한 diff 를 만듦
Version 2.125.1
Added
- 단일 파일이나 전체 디렉터리를 대상으로 preflight 보고서를 일괄 실행하는 독립형 Delphi 콘솔 도구
HotPDFPreflight를 추가했음. 이 도구는-o출력 디렉터리,-f text|json|html출력 형식,-ppassword,-r재귀 디렉터리 순회,-v상세 진행 플래그를 받음
Changed
- 종료 코드는 표준 CLI 관례를 따름. 0 성공, 1 사용 오류, 2 입력을 찾지 못함, 3 하나 이상의 PDF 가 preflight 에 실패함. 덕분에 도구를 CI 파이프라인과 shell script 에 통합할 수 있음
- 각 보고서 이름은 요청한 형식에 따라 확장자가 정해지는
<basename>.preflight.<ext>임
Version 2.125.0
Added
- 선택적
Password인자 포함 여부에 따른 두 overload 를 가진THotPDF.LoadAndValidatePreflightReport를 추가했음. 이 함수는EmbedPreflightReportInPDF가 이전에 덧붙인 보고서를 추출하고, source bytes 에 대해 현재 preflight 알고리즘을 다시 실행한 뒤, 삽입된InputFingerprint가 새로 생성한 값과 여전히 일치하면True를 반환함
Changed
OriginalReport와CurrentReport출력 인자에 두 보고서를 모두 돌려주므로 검증 실패 시 diff 를 수행해 보고서가 삽입된 시점과 검증 시점 사이에 무엇이 바뀌었는지 확인할 수 있음EmbedPreflightReportInPDF와 자연스럽게 짝을 이룸. 보관 시 한 번 삽입하고, 나중 언제든 검증해 변조나 우발적 수정을 감지할 수 있음
Version 2.124.2
Added
- CI 안정성 검사를 위해
THotPDF.CreatePreflightReport에 fingerprint 줄 두 개를 추가했음.InputFingerprint는 source PDF 바이트의 64-bit FNV-1a 해시를Size:줄 바로 뒤에 16개의 소문자 16진수로 출력하고,ReportFingerprint는 조립된 보고서의 64-bit FNV-1a 해시를 보고서 끝에 출력함
Changed
- CI 파이프라인은 실행 간 fingerprint 를 비교해 모든 진단 줄을 파싱하지 않고도 입력 파일이나 보고서 내용의 의도치 않은 변화를 감지할 수 있음
- 두 fingerprint 는 모두 비암호학적이며, FNV-1a 를 고른 이유는 외부 해시 모듈 없이도 부담이 낮고 인라인 구현이 가능하기 때문임
- JSON 출력에서는
InputFingerprint를info배열에,ReportFingerprint를info끝에 두며, 두 항목 모두spec필드에 "FNV-1a 64-bit (non-cryptographic)" 라벨을 붙임
Version 2.124.1
Added
- 조건부 incremental-update revision 진단 줄 두 개를
THotPDF.CreatePreflightReport에 추가했음.IncrementalUpdates가 0보다 크면 보고서에RevisionStartXRefPositions파일 안 각startxref키워드의 바이트 오프셋, 오래된 순서 와RevisionXRefTargets각 마커가 가리키는 xref 오프셋 이 포함되어, 호출자가 파일을 수동 파싱하지 않고도 incremental update 체인을 추적할 수 있음
Changed
- 정상적이고 단일 revision 인 PDF 는 byte-stable 로 유지됨. 새 줄은
startxref마커가 둘 이상일 때만 출력됨 - 새 필드의 JSON 출력에는 ISO 32000-1 sec 7.5.6 규격 참조가 추가됨
Version 2.124.0
Added
- 지원되는 암호화 PDF 용 선택적
Password인자를 포함한 overload 하나를 더한 두 개의 overload 로THotPDF.EmbedPreflightReportInPDF를 추가했음. 이 메서드는 source PDF의 복사본에 preflight 보고서를 마지막%%EOF뒤에 PDF 스타일 주석 줄로 덧붙여 기록함 - Delphi
PreflightReport데모에 독립형 보고서와 함께 삽입형 변형을 기록하는embedCLI 인자를 추가했음
Changed
- 보고서가 문서와 함께 이동하므로 보관 워크플로에서 유용함. 텍스트 편집기,
grep, 감사 도구가 파일이 원래 작업대를 떠난 뒤에도 훨씬 나중에 이를 찾아낼 수 있음 - 추가된 바이트는 객체 그래프 밖에 있으므로 PDF 리더는 문서를 그대로 렌더링함. cross-reference 표와 trailer 사전은 건드리지 않음
Version 2.123.1
Fixed
- 중복 object number, 손상된 xref row, 균형이 맞지 않는
stream/endstream쌍을 가진 PDF 를 수작업으로 만드는 regression test 를 추가하고, Phase F root-cause 진단 줄 세 개(DuplicateObjectList,FirstMalformedXRefOffset,StreamEndStreamDelta) 가 예상대로 동작하는지 검증했음 - 라이브러리 동작 변화는 없음. 이 테스트는 이전에 정상 케이스와 "not a PDF" 케이스만 다루던 regression suite 의 빈틈을 메움
Version 2.123.0
Added
THotPDF.CreatePreflightReport와THotPDF.SavePreflightReport에 HTML 출력 형식을 추가했음.THPDFPreflightFormatenum 에는pfText와pfJSON옆에 세 번째 값pfHTML이 추가됨
Changed
- HTML 출력은 inline CSS 와 심각도 색상 행 PASS 는 초록, FAIL 은 빨강, WARN 은 노랑, checks, hints, info, warnings 별 섹션 표, 요약 카드가 들어간 독립형 dashboard 스타일 문서임. 외부 CSS, JavaScript, 글꼴은 필요 없음
- 각 표 행에는 가능한 경우 ISO 32000-1 / ISO 19005 / ISO 15930 / ISO 14289 규격 참조가 포함되며, v2.122.1 에 추가된 JSON 출력 spec 필드와 맞춤
- HTML 출력은 byte-safe 하며 ampersand, less-than, greater-than, double-quote, single-quote 는 escape 되고 UTF-8 바이트 시퀀스는 그대로 통과함
- Delphi
PreflightReport데모는 HTML 출력을 요청하기 위해 네 번째 CLI 인자로html을 받음
Version 2.122.4
Added
- preflight 보고서에 PDF/X 하위 집합 감지를 추가했음. PDF/X 주장 이 감지되면 새
Hint PDFXVersion줄이 특정 하위 집합(X-1a:2001,X-1a:2003,X-3:2002,X-3:2003,X-4,X-4p,X-5g,X-5pg,X-5n,X-5) 을 이름으로 표시함 - PDF/UA part 추출을 추가했음. PDF/UA 주장 이 감지되면 새
Hint PDFUAPart줄이 XMP 메타데이터의pdfuaid:part값을 보고함
Changed
- 새 hint 항목의 JSON 출력에 ISO 15930 및 ISO 14289 규격 교차 참조를 추가했음
- PDF/X 또는 PDF/UA 주장이 없는 정상 PDF 는 byte-stable 하며, 새 hint 는 기반 주장이 감지될 때만 출력됨
Version 2.122.3
Added
THotPDF.CreatePreflightReport에 root-cause 진단 줄을 추가했음. 손상된 PDF 가 defect count 를 발생시키면 보고서가 이제 실행 가능한 세부 정보를 나열함
Changed
DuplicateObjectList는DuplicateObjectNumbers가 0보다 클 때 나타나며, 최대 다섯 개의 반복 object number 를 나열해 어떤 object 가 충돌하는지 바로 찾을 수 있게 함FirstMalformedXRefOffset는XRefMalformedEntries가 0보다 클 때 나타나며, 첫 번째 손상된 cross-reference row 의 1-based byte offset 을 제공함StreamEndStreamDelta는stream과endstream마커 개수가 다를 때 나타나며, 마커가 몇 개 부족하거나 중복되었는지 보여 주는 부호 있는 차이를 제공함- 정상 PDF 는 byte-stable 로 유지되며, 새 진단 줄은 기반 defect 카운터가 0이 아닐 때만 출력됨
Version 2.122.2
Changed
- preflight action 경고를 PDF 1.7 §12.6.4 전체 action set 까지 확장했음.
GoToRAction,GoToEAction,ThreadAction,URIAction,SoundAction,MovieAction,HideAction,NamedAction,SubmitFormAction,ResetFormAction,ImportDataAction,SetOCGStateAction,RenditionAction,TransAction,GoTo3DViewAction15개 advisory 경고를 추가했음 - 경고는 해당 action 토큰이 감지될 때만 출력되며, action 이 전혀 없는 정상 PDF 는 byte-stable 로 유지됨
- JSON 출력의 ISO 32000-1 규격 교차 참조가 이제 새 action 경고도 포함함
Version 2.122.1
Changed
THotPDF.CreatePreflightReport의 JSON 출력에 ISO 규격 교차 참조를 확장했음. 이제 모든checks,hints,warnings항목이 해당 진단에 대한 ISO 32000-1, ISO 19005, ISO 15930, ISO 14289 조항을 이름으로 담은spec필드를 가짐- plain-text 보고서는 그대로이며 byte-stable 로 유지되고,
spec필드는pfJSON출력에만 나타남 - 매핑은 v2.122.0 까지 보고서가 내보내는 모든 check, hint, warning 을 포함하므로 JSON 소비자는 외부 조회 표 없이도 결과를 맞는 규격 조항으로 보낼 수 있음
Version 2.122.0
Added
THotPDF.CreatePreflightReport와THotPDF.SavePreflightReport에 machine-readable JSON 출력을 추가했음. 새THPDFPreflightFormatenum 은pfText기본 plain-text 경로 와pfJSONCI 친화적 JSON 문서 값을 노출함- 형식 인식 overload 는
Format매개변수를 받으면서도 기존 text overload 의 byte-stable 성질을 유지함. 기존 애플리케이션은 코드 변경 없이 계속 동작함
Changed
- JSON 출력은 최상위
input,size,pdfVersion,xrefStyle필드와checks,info,hints,warnings배열, 그리고failed,warnings,result카운터가 들어 있는summary객체로 항목을 묶음 - 기본 JSON 인코더는
",\, 제어 바이트를 escape 하고, 외부 JSON 라이브러리 없이 UTF-8 바이트 시퀀스를 보존함 - Delphi
PreflightReport데모는 입력 PDF 의 JSON 출력을 요청하기 위해 네 번째 CLI 인자json을 받음
Version 2.121.36
Added
- PDF/A 주장 문서에 encryption, JavaScript, PDF/A-1 에서 금지된 transparency 마커가 함께 있으면 동작하는 advisory 경고
PDFAWithEncryption,PDFAWithJavaScript,PDFA1WithTransparency를 추가했음
Changed
- 준수 마커 hint 를 더해 preflight 보고서를 확장했음. 이제 보고서가 하위 도구용으로
Hint PDFAClaimed,Hint PDFAPart,Hint PDFAConformance,Hint PDFXClaimed,Hint PDFUAClaimed,Hint TaggedPDF,Hint HasTransparency줄을 노출함 - Hint 줄은 Failed 카운터를 올리지 않으며, helper 는 여전히 advisory 일 뿐 PDF/A, PDF/X, PDF/UA, ISO 32000 준수 엔진을 대체하지 않음
Version 2.121.35
Added
- 글꼴 리소스가 선언되면 최소 하나의
/FontFile,/FontFile2,/FontFile3가 있는지 확인하는 pass/fail checkFontsHaveEmbeddedPrograms를 추가했음 - widget 과 link annotation 개수 합이 전체 annotation 개수를 넘지 않는지 확인하는 pass/fail check
AnnotationCountConsistent를 추가했음
Changed
- content resource 무결성 진단을 더해 preflight 보고서를 확장했음. 이제 resource dictionary, font, embedded font program, image XObject, form XObject, ColorSpace, annotation, widget, link 개수를 포함함
- 보고서가
FlateDecode,DCTDecode,CCITTFaxDecode,JBIG2Decode,LZWDecode,ASCIIHexDecode,ASCII85Decode,RunLengthDecode,JPXDecode필터 체인 사용 개수도 포함함
Version 2.121.34
Changed
- trailer root type 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가 trailer
/Root간접 참조가/Type /Catalog으로 선언된 object 를 가리키는지 검증함
Version 2.121.33
Changed
- trailer ID 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가 trailer
/ID배열의 hex string 항목을 세고, ID 배열이 주어졌을 때 파일 식별자가 유효한 두 항목 쌍으로 존재하는지 검증함
Version 2.121.32
Changed
- trailer 간접 참조 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가 trailer
/Root와/Infoobject 참조를 보여 주고, 참조된 object 가 파일에 정의되어 있는지 검증함
Version 2.121.31
Changed
- stream length coverage 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가 stream
/Length항목을 세고 감지된 stream 에 length 항목이 있는지 검증함
Version 2.121.30
Changed
- revision marker 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가
%%EOF마커와startxref섹션을 세고, 개수가 맞는지 검증하며, 마지막startxref마커가 마지막 EOF 마커보다 앞에 있는지 확인함
Version 2.121.29
Changed
- page tree 일관성 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가 선언된 page tree
/Count와, 이를 HotPDF 가 로드한 page 및 센 page object 와 비교하는 pass/fail 검사를 포함함
Version 2.121.28
Changed
- xref table row 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가 xref subsection, entry, free-entry, in-use-entry, malformed-row 개수를 포함하고, xref row 구문과 xref coverage 가 가장 큰 object number 에 도달하는지에 대한 pass/fail 검사를 제공함
Version 2.121.27
Changed
- bounded PDF name-pair counting 과 추가 일관성 검사를 더해 preflight 보고서를 확장했음. 이제 보고서가 catalog, page tree, page object 를 구분하고 object number 가 고유한지 검증하며, trailer
/Size가 가장 큰 object number 를 덮는지와 trailer/Root가 있는지 확인함
Version 2.121.26
Changed
- object 와 trailer 진단을 더해 preflight 보고서를 확장했음. 이제 보고서가 간접 object 정의 수, 가장 큰 object number, 중복 object number 수, 균형이 맞는
stream/endstream검사, 그리고/Size,/Root,/Info,/ID,/Encrypt에 대한 trailer 세부 정보를 포함함
Version 2.121.25
Changed
THotPDF.CreatePreflightReport와THotPDF.SavePreflightReport에 더 깊은 cross-reference 진단을 더했음. 이제 보고서가 마지막%%EOF마커가 파일 끝 근처에 있는지 확인하고, 마지막startxref오프셋을 파싱하며, xref table 인지 xref stream 인지 식별하고, xref table, xref stream, object stream, trailer, incremental update, linearization 개수를 포함함
Version 2.121.24
Changed
- password 인식 overload 와 더 풍부한 진단으로 preflight report helper 를 확장했음. 이제 보고서가 PDF header 버전, xref style, 해결된 로드 페이지
MediaBox항목, form field 개수, stream 개수, feature 존재 플래그, JavaScript/action/media attachment 경고, 경고 총합, 손상 파일의 pass/fail 요약을 포함함. DelphiPreflightReport데모는 지원되는 암호화 PDF 에 대해 선택적 password 인자를 받음
Version 2.121.23
Added
- 라이브러리 수준 preflight report helper 인
THotPDF.CreatePreflightReport와THotPDF.SavePreflightReport를 추가했음. 이제 애플리케이션은 header, EOF 마커,startxref, trailer 또는 XRef stream, 로드 가능한 page 개수, encryption 상태, catalog, page tree, page object, page box, information dictionary, root reference, 간접 object 개수, 전체 pass/fail 상태를 다루는 input PDF 텍스트 요약을 생성할 수 있음. DelphiPreflightReport데모는 이제 이 API 를 직접 사용함
Version 2.121.22
Added
- 샘플 PDF 를 만들고 PDF header, EOF 마커, 로드 가능한 page 개수, encryption 상태, catalog, page tree, page box, document information dictionary 를 포함한 가벼운 구조 검사를 담은 텍스트 보고서를 기록하는 Delphi
PreflightReport콘솔 데모를 추가했음. 이 워크플로는AutoLaunch를 끈 상태를 유지하며, 명령줄에서 기존 input PDF 도 보고할 수 있음
Version 2.121.21
Added
- 보고서를 만들고 제어된 텍스트 행을 검색한 뒤, 일치하는 모든 용어에 PDF highlight annotation 과
/QuadPoints를 붙이는 DelphiSearchAndSelect콘솔 데모를 추가했음. 이 샘플은AutoLaunch를 끈 상태를 유지하므로 명령줄과 자동 검증에 적합함
Version 2.121.20
Added
- RC4-40 및 RC4-128 Standard 암호화 PDF 의 password 로드를 추가했음. 이제 애플리케이션은 password 와 함께
LoadFromFile또는LoadFromStream을 호출하거나, 로드 후DecryptLoadedDocument를 호출한 다음SaveLoadedDocument로 암호 해제된 로드 문서 복사본을 저장할 수 있음. 새 DelphiDecryptPDF콘솔 데모는 password 로 보호된 샘플을 만들고 PDF 뷰어를 띄우지 않은 채 복호화된 복사본을 기록함
Version 2.121.19
Added
- 인쇄 준비가 된 PDF preset 을 생성하는 Delphi
Printer콘솔 데모를 추가했음. 이 샘플은 PDF 뷰어를 띄우거나 실제 프린터로 작업을 보내지 않고도 인쇄 중심/ViewerPreferences, pageBleedBox와TrimBox항목, 인쇄 가능한 annotation 플래그, 인쇄 제어 ExtGState 를 기록함
Version 2.121.18
Added
- 지원되는 source graphics 를 PDF 출력 파일로 변환하는 Delphi
ConvertTo콘솔 데모를 추가했음. 이 워크플로는AutoLaunch를 끈 상태로 JPEG, BMP, TIFF, EMF 입력에서 별도의 PDF 파일을 만들며, 명령줄과 자동 검사용으로 적합함
Version 2.121.17
Added
InsertPagesFromDocument,ExtractPagesToFile,MovePage를 갖춘 로드 페이지 작업 helper 를 추가했음. 이제 애플리케이션은 다른 로드 문서의 page 를 삽입하고, 선택한 page 를 새 PDF 로 추출하며, 이후 save 와 extraction 호출이 업데이트된 page 순서를 따르도록 로드 page 를 재정렬할 수 있음. DelphiPageOperations데모는 PDF 뷰어를 자동 실행하지 않고 삽입, 추출, 재정렬 워크플로를 보여 줌
Version 2.121.16
Added
- 로드된 AcroForm 편집을
RemoveFormField와FlattenFormFields로 확장했음. 이제 애플리케이션은 인덱스나 이름으로 로드된 field 를 제거하거나, interactive AcroForm tree 와 widget annotation 을 없애면서 로드된 field 를 정적 page content 로 평탄화할 수 있음. DelphiFormFields데모는 이제 PDF 뷰어를 자동 실행하지 않고 설명, 제거, 평탄화를 보여 줌
Version 2.121.15
Fixed
THotPDF.FindLoadedBookmarkPageIndex로 로드된 bookmark 제목 검색을 추가했음. 이제 애플리케이션은 기존 PDF 를 로드하고 bookmark 제목으로 outline tree 를 검색한 뒤, 일치하는/Dest또는 local GoTo action 목적지를 0부터 시작하는 page index 로 해석할 수 있음
Version 2.121.14
Added
- 생성되거나 로드된 page 에 회전된 투명 text watermark 를 그리는
THPDFPage.AddTextWatermark를 추가했음. 새 DelphiWatermark데모는 source PDF 를 만들고 로드한 뒤 모든 page 에 watermark 를 적용하고 편집된 문서를 저장함
Version 2.121.13
Added
GetFormFieldDescription으로 로드된 AcroForm field 설명 검사를 추가했음. 이제 애플리케이션은 field 값, 옵션, 읽기 전용 상태, 이름 변경 작업과 함께 인덱스나 이름으로 로드된 field 의/TUtooltip 텍스트를 읽을 수 있음
Version 2.121.12
Fixed
GetFormFieldOptionCount와GetFormFieldOptionValue로 로드된 choice-field 옵션 검사를 추가했음. 이제 애플리케이션은 기존 combo box 나 list box field 를 로드하고, 허용된/Opt값을 열거하며, 같은 로드된 form 업데이트 및 저장 워크플로를 계속 사용할 수 있음