NextPDF Connect에서 HTML 테이블 렌더링
한눈에 보기
섹션 제목: “한눈에 보기”HTML 테이블 문자열의 구조화된 표 형식 데이터를 렌더링합니다. add_table은 레이아웃 전에 엄격한 DOMDocument 허용 목록으로 입력을 살균하므로 원본 마크업이 어떻게 작성되었든 출력이 일관되게 유지됩니다. 도구는 create_pdf, add_table, output_pdf이며 — 모두 Core입니다. 테이블은 row/column 그리드로 배치됩니다(CSS Tables 3 §3.1).
composer require nextpdf/server트랜스포트를 바인딩합니다. 입력에는 <table> 루트, <tr> 행, <th>/<td> 셀이 포함되어야 합니다.
개념 개요
섹션 제목: “개념 개요”add_table은 고정된 요소 허용 목록(table, thead, tbody, tfoot, tr, th, td, caption, b, i, u, strong, em, br, p, span)을 적용합니다. 모든 속성이 제거됩니다 — 모든 요소에서 style, class, width, colspan, rowspan, id 및 기타 속성이 제거됩니다. 허용 목록에 없는 태그는 해당 텍스트 콘텐츠로 대체됩니다. 셀 텍스트는 문서의 활성 글꼴 상태로 렌더링되며, 이 상태는 add_table 전에 set_font로 설정합니다. 텍스트는 콘텐츠 스트림 순서대로 텍스트 표시 연산자에 의해 방출됩니다(ISO 32000-2 §9.4). 열 너비는 인라인 CSS가 아니라 레이아웃 엔진이 결정합니다.
API 표면
섹션 제목: “API 표면”| 도구 | 역할 | 위험 등급 |
|---|---|---|
create_pdf | 세션 열기 | 안전 |
set_font | 셀 텍스트 글꼴 설정(선택 사항, add_table 전) | 주의 |
add_table | 테이블 살균 및 레이아웃 | 주의 |
output_pdf | PDF 렌더링 및 반환 | 승인 필요 / 검토(base64) |
도구 카탈로그가 공식 카탈로그입니다. 사용 가능한 도구는 설치된 등급에 따라 달라집니다.
코드 샘플 — 빠른 시작
섹션 제목: “코드 샘플 — 빠른 시작”create_pdf(A4 세로, 제목) →document_id.- 완전한
<table>...</table>문자열(헤더 행과 데이터 행)을 사용한add_table. output_pdf→ base64, 또는file_path를 지정하면 게이트가 적용된 파일 쓰기.
커서는 마지막으로 렌더링된 행 아래로 이동해 후속 콘텐츠를 위한 공간을 남깁니다.
코드 샘플 — 프로덕션
섹션 제목: “코드 샘플 — 프로덕션”전송하기 전에 HTML을 검증하십시오. 결정적 타이포그래피를 위해 set_font로 셀 글꼴을 설정하십시오 — 기본값에 의존하면 출력 글꼴이 구현에 종속된 상태로 남습니다. 호스트가 호출할 수 있는 도구를 제어하려면 보안 정책을 통해 레지스트리를 제한하십시오.
엣지 케이스 및 함정
섹션 제목: “엣지 케이스 및 함정”- 비어 있거나 테이블이 아닌 HTML.
<table>이 없는 입력은 렌더링 가능한 테이블이 없다는 오류를 반환합니다. - 잘못된 형식의 마크업. 균형이 맞지 않는 태그는 파싱 오류를 반환하므로, 먼저 구조를 검증하십시오.
- 페이지보다 넓은 테이블. 열 수를 줄이거나, 콘텐츠 길이를 줄이거나, 가로 방향으로 전환하십시오.
- 오버플로. 높이가 큰 테이블은 새 페이지로 이어집니다. 응답에서
position.page를 확인하거나, 미리add_page를 호출하십시오.
작은 테이블은 예산 내에서 렌더링되며, 출력은 수 KB입니다. 프로필은 structural입니다. 살균은 파싱된 DOM에 대한 단일 패스로 실행됩니다.
보안 참고
섹션 제목: “보안 참고”속성 제거는 무조건적이며 우회할 수 없습니다. 이는 셀 마크업을 통한 스타일 및 스크립트 주입을 막습니다. 인라인 CSS, 이벤트 핸들러 또는 javascript: URL은 모두 제거됩니다. 허용 목록이 신뢰 경계이므로 렌더링된 출력을 원본의 임의 스타일링을 충실히 재현한 것으로 취급하지 마십시오.
적합성
섹션 제목: “적합성”| 진술 | 사양 | 절 | reference_id |
|---|---|---|---|
| 테이블은 row/column 셀 그리드로 배치됩니다. | CSS Tables 3 | §3.1 | |
| 텍스트는 스트림 순서대로 텍스트 연산자에 의해 표시됩니다. | ISO 32000-2 | §9.4 |
상업적 맥락
섹션 제목: “상업적 맥락”해당 없음 — 여기의 모든 도구는 Core입니다.
CSS 지원 매트릭스 발췌(검증된 항목만)
섹션 제목: “CSS 지원 매트릭스 발췌(검증된 항목만)”add_table은 범용 CSS 엔진을 실행하지 않습니다. 유일한 “CSS” 동작은 고정된 테이블 그리드 모델입니다: 행과 열은 테이블 구조에서 파생되며, 레이아웃 엔진이 너비를 선택합니다. 인라인 스타일링은 속성이 제거되므로 설계상 지원되지 않습니다. 엔진 수준(비 Connect) CSS 적용 범위는 프로젝트 CSS 지원 매트릭스를 참조하십시오.
단일 패스 스트리밍 제약
섹션 제목: “단일 패스 스트리밍 제약”add_table은 제공된 마크업을 한 번 DOM으로 파싱하고 단일 패스로 배치합니다. 외부 스타일시트에 대한 리플로는 없습니다. 페이지를 넘치는 테이블은 소급해서 리플로하지 않고 다음 페이지로 넘어갑니다.
대형 테이블의 메모리 예산
섹션 제목: “대형 테이블의 메모리 예산”매우 큰 테이블은 호출 전체 동안 파싱된 DOM과 배치된 셀을 메모리에 보유합니다. 대형 데이터셋은 최대 메모리 예산 내에 유지되도록 여러 add_table 호출로 분할하십시오.
트랜스포트 가용성
섹션 제목: “트랜스포트 가용성”| 트랜스포트 | 사용 가능 | 참고 |
|---|---|---|
| MCP(stdio) | 예 | 대형 HTML은 stdio 프레임을 부풀립니다. |
| REST | 예 | 요청 본문에 HTML을 전송하십시오. |
| gRPC | 예 | 단항(Unary); 메시지 크기 제한이 적용됩니다. |
HITL 위험 등급
섹션 제목: “HITL 위험 등급”create_pdf는 안전(Safe)입니다; set_font 및 add_table은 주의(Caution)입니다; output_pdf는 승인 필요이며, base64 모드에서는 검토로 강등됩니다. 파일 출력은 승인 필요 상태로 유지됩니다 — output-approval을 참조하십시오.
확인 게이트 JSON 봉투
섹션 제목: “확인 게이트 JSON 봉투”Base64 출력:
{ "allowed": true }파일 출력은 output-approval에 문서화된 챌린지 봉투를 반환합니다.