Typed Table Extraction

THotPDF.ExtractLoadedTypedTables는 semantic table row를 공개 canonical column grid로 변환하며, 로드된 문서는 수정하지 않습니다

테이블 연속성

호환되는 인접 fragment는 canonical column을 추가할 수 있고, 병합된 heading을 버리는 대신 빠진 중간 시작 위치를 명시적인 ColumnSpan 값으로 바꿔줍니다

연속된 페이지의 호환 테이블은 하나의 테이블이 되고, 일치하는 선행 header row는 그대로 남으면서 IsRepeatedHeader를 갖습니다

타입 값과 confidence

각 cell은 원본 Unicode text, 페이지 공간 bounds, row/column span, 정규화된 값, 타입이 지정된 storage, 통화 code, confidence를 유지합니다

추론은 호출자가 고른 소수점, 천 단위, 날짜 순서 규칙에 따라 빈 값, string, integer, number, boolean, date, date-time, currency, percentage 값을 인식합니다

bounded 내보내기

ExportLoadedTypedTables는 bounded staging stream과 rollback이 가능한 최종 공개 방식으로, 확장된 RFC 4180 스타일 CSV row 또는 metadata가 풍부한 JSON을 씁니다

페이지, 글리프, 소스 테이블, 출력 테이블, row, cell, text, 출력 바이트, confidence, 취소 한도는 결과를 공개하기 전에 검사합니다

XLSX 워크북

HPDFXLSXExport 유닛은 Office를 설치하거나 외부 스프레드시트 라이브러리를 불러오지 않고 THPDFTypedTables를 Office Open XML 워크북으로 내보냅니다

HPDFExportTypedTablesXLSX는 읽고 쓸 수 있고 seek 가능한 stream의 현재 위치에 기록하며, 공개 전에 워크북 전체를 staging하고 복구 가능한 쓰기 실패가 발생하면 덮어쓴 바이트를 복원합니다

HPDFExportTypedTablesXLSXFile은 대상 옆에 배타적으로 만든 임시 파일을 쓰고 flush한 뒤, 내보내기가 성공한 경우에만 원자적으로 대상을 교체합니다

HPDFExportLoadedTypedTablesXLSX는 추출과 stream 내보내기를 묶고, 로드된 소스와 별칭을 이루는 대상은 거부합니다

추출된 각 테이블은 Table N이라는 worksheet가 되며, 숫자·boolean cell, date 및 date-time 형식, 숫자 형식 안의 통화 code, 백분율 형식, 검증된 병합 range를 갖습니다

소수점 15자리가 넘는 integer는 Excel 숫자 cell의 정밀도가 제한적이므로 정확한 값을 보존하려고 text로 저장합니다

string은 =으로 시작하는 값까지 그대로 text로 남고, XML 제어 문자와 Office Open XML escape 시퀀스도 SpreadsheetML escaping을 거쳐 보존됩니다

기본적으로 숨은 Source metadata worksheet가 워크북 cell 주소, 0부터 시작하는 소스 페이지·테이블 인덱스, 원본·정규화 텍스트, 값 종류, 통화 code, 페이지 공간 bounds, confidence를 소스 cell마다 기록합니다

THPDFXLSXExportOptions.Default는 테이블 4,096개, row 1,000,000개, cell 1,000,000개, 출력 256MiB까지 허용하며, 선택적 THPDFCancellationToken과 metadata worksheet를 뺄 수 있는 옵션을 제공합니다

내보내기는 겹치는 병합, 순서가 없거나 중복된 column 인덱스, 비유한 수, 잘못된 통화 code, 1900~9999 밖의 날짜, 32,767 UTF-16 unit이 넘는 텍스트, Excel의 1,048,576행·16,384열 한도를 벗어나는 worksheet를 거부합니다

metadata 시트는 header row 하나를 차지하므로 켜면 워크북 전체 소스 cell이 1,048,575개로 더 제한됩니다. 빈 추출이라도 보이는 시트 하나는 만듭니다

ZIP 멤버는 stored 압축 방식을 쓰므로 출력 크기가 압축 워크북보다 커질 수 있습니다. 내보내기는 PDF 시각 스타일은 물론 chart, formula, macro, 내장 이미지도 유지하지 않습니다

JSON job과 C ABI는 tables.export에 format: "xlsx"로 같은 워크북 파이프라인을 노출하며, 공유 추출·출력 예산이 적용됩니다

관련 API