자동 XFA 네이티브 그래픽과 이미지
유닛: HPDFXFAHeadless
HPDFXFAWriteHeadlessPDF는 기존 텍스트·위젯 소비자와 함께 XDP에서 rectangle, line, arc, 인라인 이미지 draw 콜백을 바로 소비합니다
각 draw는 실제 레이아웃 페이지에 놓이는 네이티브 Form XObject를 만듭니다. 이미지 draw는 필요할 때 실제 Image XObject와 알파 소프트 마스크를 담습니다
벡터 경로
사각형은 네이티브 PDF 사각형 경로를 쓰고, line은 슬래시나 역슬래시 기울기를 유지하며, 타원 호는 최대 90도의 3차 세그먼트를 씁니다
첫 번째 유효 edge가 RGB 스트로크 색과 두께를 공급합니다. 포인트 미만 폭도 포함입니다. 스트로크 appearance 경계는 두께의 절반을 포함해 폼이 자기 경계를 잘라내지 않게 합니다
호는 startAngle과 부호 있는 sweepAngle을 소비합니다. 기본은 한 바퀴이고 절대 스윕 최대는 360도입니다
draw 회전, 스케일, 이동 힌트는 draw 중심 주변의 유한 아핀 배치로 한 번 적용되며 반시계 방향이 양의 회전입니다. 왼쪽 위 XFA 좌표는 네이티브 PDF 원점으로 한 번 변환됩니다
PNG와 JPEG
| 형식 | 실제 네이티브 소비 |
|---|---|
| PNG grayscale | 1, 2, 4, 8, 16비트 샘플. 팩 샘플은 8비트로 확장되고 16비트 정밀도는 유지됩니다 |
| PNG RGB | 8비트와 16비트 색 샘플 |
| PNG indexed color | 1, 2, 4, 8비트 인덱스가 팔레트를 거쳐 RGB 샘플로 확장됩니다 |
| PNG transparency | grayscale과 RGB 투명 샘플, 팔레트 알파, 8·16비트 grayscale-alpha와 RGBA. 실제 /SMask 스트림이 알파 정밀도를 유지합니다 |
| PNG filtering and interlace | 다섯 가지 PNG 행 필터와 Adam7 패스 전부, 공유 네이티브 zlib과 predictor 구현으로 검증됩니다 |
| JPEG | 8비트 baseline과 progressive grayscale, RGB, CMYK 프레임. 원본 /DCTDecode 스트림을 유지하기 전에 공유 네이티브 JPEG 디코더로 검증됩니다 |
PNG 청크 체크섬, 순서, 크기, 팔레트 인덱스, 투명 샘플 범위, 정확한 압축 해제 길이는 후보를 확정하기 전에 검사합니다. 잘린 데이터나 초과 압축 데이터는 준비를 실패시킵니다
JPEG 프레임 크기는 실제 네이티브 디코딩과 일치해야 하고, Adobe CMYK 반전은 이미지 사전에 명시적으로 선언됩니다
JPEG에는 기존 네이티브 TurboJPEG 런타임이 필요합니다. HOTPDF_TURBOJPEG_LIBRARY로 절대 라이브러리 경로를 지정할 수 있고, 의존 라이브러리는 운영체제가 찾습니다
이미지 aspect는 fit, none, width, height, actual을 지원합니다. PNG pHYs와 JPEG JFIF 밀도가 물리 픽셀 크기를 정하고, 쓸 만한 밀도가 없으면 96 dpi를 씁니다
스케일된 이미지는 XFA draw 사각형 안에서 중앙에 놓이고 잘립니다. 알파 합성은 여전히 네이티브 PDF 리더 몫입니다
경계와 트랜잭션
인코딩된 이미지 바이트, 디코딩 작업 버퍼, raw 이미지·알파 스트림은 할당 전에 한도가 매겨집니다. 네이티브 객체 한도와 이미지·폰트 스트림 집계 한도는 계속 적용됩니다
취소는 청크 파싱, 데이터 인플레이션, 행 디코딩, 네이티브 객체 배치 중에 검사합니다. 기존 네이티브 JPEG 디코더는 호출자의 token을 받습니다
준비 실패는 대상 위치, 길이, 바이트를 보존합니다. 마지막 대상 WriteBuffer는 호출자 스트림 자체의 I/O 의미론을 따릅니다
현재 경계
채워진 도형, corner 스타일링, edge별 경계, 대시 패턴, 바코드, 외부 이미지 전송, imageEdit 위젯, 다른 이미지 형식, 내장 색 프로파일, Exif 방향에는 소비자 통합이 아직 더 필요합니다
움직이는 PNG는 기본 정지 이미지로 소비됩니다. 외부 XML exData는 별도 기능으로 남고, 이 draw 어댑터는 임의의 내장 객체를 실행하지 않습니다
검수
Tests/Linux/Build-XFAHeadlessGraphicFixtures.py는 결정론적인 행 필터, Adam7, 샘플 정밀도, 투명성, 물리 aspect, JPEG, 잘못된 프로토콜 픽스처를 만듭니다
Tests/Linux/XFAHeadlessGraphicsTests.pas는 실제 네이티브 PDF를 쓰고 다시 열며 실패 시 호출자 보존을 검증합니다. Verify-XFAHeadlessGraphics.py는 pypdf와 MuPDF로 디코딩된 이미지 샘플, /SMask 정밀도, 벡터 연산자, 배치, 렌더 픽셀을 독립적으로 검사합니다
자동 XFA 네이티브 PDF 생성은 기존 field·텍스트 소비자와 공개 옵션·결과 API를 설명합니다