HPDFCreateXPSDocumentHandler Function
function HPDFCreateXPSDocumentHandler: IHPDFDocumentHandler;
순서화된 Glyphs 텍스트와 네이티브 벡터 Path 변환을 갖춘 선택적 XPS/OpenXPS fixed-page 핸들러를 만듭니다
path importer는 상한 축약 지오메트리, F0/F1 채움 규칙, 속성 또는 property-element solid ARGB/RGB 채움·선, property-element multi-stop LinearGradientBrush와 타원 RadialGradientBrush 값, 균일 stop alpha, brush/path opacity, 상대-바운스/절대 gradient 매핑, 선 폭, 6파라미터 RenderTransform 값을 받습니다
패키지 JPEG/PNG/TIFF/JPEG XR ImageBrush 채움은 None/Tile/FlipX/FlipY/FlipXY tile 모드, 절대 또는 RelativeToBoundingBox Viewbox/Viewport 매핑, 네이티브 path·배치 클리핑, brush 로컬 좌표의 유한 6파라미터 Transform 속성 또는 ImageBrush.Transform MatrixTransform 요소, brush/path opacity, PNG soft-mask alpha, DPI 인식 고유 크기, 변환당 하나의 decoded-resource 캐시를 지원합니다
반복 이미지 brush는 일반/반사 셀용으로 클리핑된 1, 2, 4개 배치를 갖는 네이티브 PDF 이미지 tiling pattern을 쓰고, 하나의 image XObject와 soft mask는 공유된 채 유지됩니다. pattern 행렬은 fixed-page, path, brush transform을 이어 붙이며 벡터 path 지오메트리는 바꾸지 않습니다
Path.OpacityMask는 일반/타일/반사 배치의 solid, multi-stop linear 또는 타원 radial gradient, PNG ImageBrush mask를 받습니다. 균일 alpha는 기존 채움/선 상태로 병합되고, 가변 alpha는 shading pattern과 이미지 soft-mask stream을 재사용하는 상한 네이티브 DeviceGray transparency group을 씁니다
VisualBrush는 inline/리소스 기반 Canvas, Path, Glyphs visual을 받고, 중첩/원격 ResourceDictionary scope로 StaticResource 값을 해석하며, 절대 Viewbox를 절대 또는 RelativeToBoundingBox Viewport로 매핑합니다
서로 다른 visual은 필요한 폰트, XObject, pattern, 그래픽 상태, 색공간 리소스를 갖춘 재사용 가능한 PDF Form XObject로 한 번 컴파일됩니다. 평범한 배치는 Form을 직접 실행하고, Tile/FlipX/FlipY/FlipXY는 셀마다 visual 드로잉 명령을 펼치는 대신 상한 네이티브 tiling pattern을 씁니다
Visual, brush, 포함 path의 transform과 opacity는 각자의 좌표 공간에서 합성되고, 재귀 리소스, malformed 매핑, 미지원 중첩 콘텐츠, 초과한 depth/content/cache/배치 예산은 부분 Form이 공개되기 전에 fail-closed 됩니다
Canvas.Clip은 축약 지오메트리, 로컬/원격 StaticResource PathGeometry 값, 상한 구조화 PathFigure line/polyline/Bézier/quadratic/arc 세그먼트가 담긴 직접 property element를 받습니다. 지오메트리 transform과 EvenOdd/NonZero 채움 규칙은 네이티브 PDF W*/W 클리핑 전에 Canvas transform과 합성됩니다
중첩 Canvas 클립은 PDF 그래픽 상태 교집합을 유지하고, 자손 링크 주석을 활성 변환 클립 바운드로 제한하며, 빈 지오메트리는 진단 없이 빈 클립으로 취급하고, 파싱 지오메트리를 100,000 수치로 제한하며, 지오메트리나 실효 행렬이 malformed/특이일 때 자식 도색 전에 fail-closed 됩니다
Canvas Opacity와 solid/linear-gradient/radial-gradient/PNG 이미지 Canvas.OpacityMask 값은 자손을 하나의 격리 DeviceRGB Form XObject로 캡처해 겹치는 자식이 group alpha 적용 전에 합성되게 합니다. 균일 mask alpha는 그 group 상태로 병합되고, 공간적으로 가변인 alpha는 상한 네이티브 soft-mask 리소스를 재사용합니다
중첩 Canvas group은 자체 transform, 클립, 이전된 폰트, XObject, pattern, 그래픽 상태, 색공간 리소스, 클립된 링크를 보존합니다. 변환은 그룹당 최대 4,096개 Canvas group Form과 16MiB 캡처 명령을 허용하고, 중복/미지원/malformed/특이/과대 mask는 부분 또는 도달 불가 리소스를 공개하기 전에 거부합니다
Glyphs는 최대 65,536개 엄격 Indices 매핑을 파싱하고, cluster code-unit/glyph 수, 명시적 em 백분위 advance, 가로/세로 오프셋, 홀수 BidiLevel 역방향 진행, solid 속성 또는 Glyphs.Fill property brush, opacity, Unicode 추출을 보존하며, 단순 매핑을 네이티브 PDF TJ 배열로 묶고, malformed/무한 입력에서 fail-closed 됩니다
패키지 FontUri 리소스는 TrueType/OpenType 프로그램, TTC 멤버 조각, GUID 난독화 XPS 폰트를 받고, 직접 GlyphIndex 값이나 cmap 유도 glyph을 보존하며, run에 걸쳐 폰트 바이트를 재사용하고, 내장/비subsetting 권한을 존중하며, cluster 인식 ToUnicode 맵을 공개합니다
변환된 Path/Glyphs visual의 FixedPage.NavigateUri는 클릭 바운드가 path 지오메트리나 glyph 메트릭을 따르는 네이티브 PDF 링크 주석을 만듭니다. HTTP/HTTPS/mail 링크는 URI action이 되고, 패키지 상대 페이지 참조와 percent 디코딩된 LinkTarget 조각은 모든 페이지가 만들어진 뒤 순방향/역방향 GoTo action이 됩니다
Canvas FixedPage.NavigateUri는 자손이 재정의할 때까지 자손 Path, Glyphs, 중첩 Canvas visual이 상속합니다. 각 주석은 자기 visual의 바운드와 transform을 유지하고, 활성 Canvas 클립이 상속된 클릭 영역을 구속하며, 중첩 scope가 바깥 대상을 복원하고, 격리 opacity group이 주석을 보존하며, 재사용 VisualBrush 캡처는 비대화형으로 남습니다
내비게이션은 링크 최대 65,536개, URI당 8,192자를 받고, 공개 중 취소를 검사하며, 재사용 VisualBrush 콘텐츠 캡처 중 주석을 억제하고, 제어 문자, 안전하지 않은 scheme, 없는 대상, 페이지/조각 불일치에서 fail-closed 됩니다
미지원 비표준 RelativeTransform, 미해석 행렬 리소스, Repeat/Reflect gradient spread, non-sRGB 보간, 도색 brush의 가변 stop alpha, 퇴화 축, 색 변환, 이미지 선, 상대 VisualBrush viewbox, 스타일 시뮬레이션, 옆으로 누운 glyph, 고급 stroke 속성은 명시적 진단으로 남습니다